File size: 1,132 Bytes
6c75f16 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
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`);
|