import { serve } from "bun"; import { handleWebSocketConnection } from "./websocket"; import { router } from "./router"; const PORT = process.env.PORT || 7860; export const server = serve({ port: PORT, async fetch(req, server) { const url = new URL(req.url); if (url.pathname === "/ws") { const upgraded = server.upgrade(req); if (!upgraded) { return new Response("WebSocket upgrade failed", { status: 400 }); } return undefined; } return await router(req); }, websocket: { open(ws) { console.log("[WebSocket] Client connected"); handleWebSocketConnection(ws); }, message(ws: any, message) { try { const data = JSON.parse(message.toString()); ws.data?.handleMessage?.(data); } catch (error) { console.error("[WebSocket] Error parsing message:", error); } }, close(ws: any) { console.log("[WebSocket] Client disconnected"); ws.data?.cleanup?.(); }, }, }); console.log(`Server running on http://localhost:${PORT}`); console.log(`WebSocket available at ws://localhost:${PORT}/ws`);