import type { NextRequest } from "next/server" import type { WebSocket, WebSocketServer } from "ws" export function UPGRADE(client: WebSocket, server: WebSocketServer, _req: NextRequest) { client.send(JSON.stringify({ type: "server:hello", message: "Connected via next-ws" })) client.on("message", (data) => { let payload: any try { payload = JSON.parse(data.toString()) } catch { return } if (payload?.type === "client:ping") { const message = typeof payload.message === "string" ? payload.message : "" const response = { type: "server:pong", message: `pong: ${message}`.trim() } server.clients.forEach((peer) => { if (peer.readyState === client.OPEN) peer.send(JSON.stringify(response)) }) } }) }