Spaces:
Runtime error
Runtime error
| import http from 'node:http' | |
| import { WebSocketServer } from 'ws' | |
| const host = process.env.OPENCLAW_GATEWAY_HOST || '127.0.0.1' | |
| const port = Number(process.env.OPENCLAW_GATEWAY_PORT || 18789) | |
| const server = http.createServer((req, res) => { | |
| if (!req.url) { | |
| res.writeHead(404) | |
| res.end() | |
| return | |
| } | |
| if (req.url === '/health') { | |
| res.writeHead(200, { 'content-type': 'application/json' }) | |
| res.end(JSON.stringify({ ok: true, service: 'openclaw-mock-gateway' })) | |
| return | |
| } | |
| res.writeHead(200, { 'content-type': 'application/json' }) | |
| res.end(JSON.stringify({ ok: true })) | |
| }) | |
| const wss = new WebSocketServer({ noServer: true }) | |
| wss.on('connection', (ws) => { | |
| ws.send(JSON.stringify({ type: 'status', connected: true, source: 'mock-gateway' })) | |
| ws.on('message', (raw) => { | |
| const text = raw.toString() | |
| if (text.includes('ping')) { | |
| ws.send(JSON.stringify({ type: 'pong', ts: Date.now() })) | |
| return | |
| } | |
| ws.send(JSON.stringify({ type: 'event', message: 'ack', raw: text })) | |
| }) | |
| }) | |
| server.on('upgrade', (req, socket, head) => { | |
| wss.handleUpgrade(req, socket, head, (ws) => { | |
| wss.emit('connection', ws, req) | |
| }) | |
| }) | |
| server.listen(port, host, () => { | |
| process.stdout.write(`[openclaw-mock-gateway] listening on ${host}:${port}\n`) | |
| }) | |
| function shutdown() { | |
| wss.clients.forEach((client) => { | |
| try { | |
| client.close() | |
| } catch { | |
| // noop | |
| } | |
| }) | |
| server.close(() => process.exit(0)) | |
| } | |
| process.on('SIGINT', shutdown) | |
| process.on('SIGTERM', shutdown) | |