fix sidecar websocket: routes handler was intercepting upgrade requests
The Bun routes option matched "/" before fetch could handle the WebSocket upgrade, so the API server could never connect. Moved route handling into fetch after the upgrade check. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -203,22 +203,23 @@ const server = Bun.serve({
|
|||||||
port: PORT,
|
port: PORT,
|
||||||
hostname: '127.0.0.1',
|
hostname: '127.0.0.1',
|
||||||
|
|
||||||
routes: {
|
|
||||||
'/': () => new Response('process-sidecar'),
|
|
||||||
'/health': () => new Response(JSON.stringify({
|
|
||||||
status: 'ok',
|
|
||||||
uptime: Date.now() - startedAt,
|
|
||||||
piSessions: piManager.getAllSessions().length,
|
|
||||||
claudeSessions: claudeManager.getActiveSessionKeys().length,
|
|
||||||
}), { headers: { 'Content-Type': 'application/json' } }),
|
|
||||||
},
|
|
||||||
|
|
||||||
fetch(req, server) {
|
fetch(req, server) {
|
||||||
if (req.headers.get('upgrade') === 'websocket') {
|
if (req.headers.get('upgrade') === 'websocket') {
|
||||||
const ok = server.upgrade(req);
|
const ok = server.upgrade(req);
|
||||||
if (!ok) return new Response('Upgrade failed', { status: 500 });
|
if (!ok) return new Response('Upgrade failed', { status: 500 });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const url = new URL(req.url);
|
||||||
|
if (url.pathname === '/') return new Response('process-sidecar');
|
||||||
|
if (url.pathname === '/health') {
|
||||||
|
return new Response(JSON.stringify({
|
||||||
|
status: 'ok',
|
||||||
|
uptime: Date.now() - startedAt,
|
||||||
|
piSessions: piManager.getAllSessions().length,
|
||||||
|
claudeSessions: claudeManager.getActiveSessionKeys().length,
|
||||||
|
}), { headers: { 'Content-Type': 'application/json' } });
|
||||||
|
}
|
||||||
return new Response('Not found', { status: 404 });
|
return new Response('Not found', { status: 404 });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user