yuki / src /server /index.ts
OhMyDitzzy
anything
6c75f16
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`);