| 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`); | |