Improved some stuff

This commit is contained in:
2026-02-09 11:34:46 +01:00
parent 25fd5f207e
commit 9cf450c0ec
2 changed files with 14 additions and 9 deletions
-3
View File
@@ -22,9 +22,6 @@ app.prepare().then(() => {
const wss = new WebSocketServer({ noServer: true }); const wss = new WebSocketServer({ noServer: true });
// WebSocket connections
wss.on("connection", (ws: WebSocket, req: IncomingMessage) => {});
// Upgrade HTTP → WebSocket // Upgrade HTTP → WebSocket
server.on("upgrade", (req, socket, head) => { server.on("upgrade", (req, socket, head) => {
if (!req.url) return; if (!req.url) return;
+14 -6
View File
@@ -1,16 +1,19 @@
import { Duplex } from "stream"; import { Duplex } from "stream";
import { WebSocketServer } from "ws";
export interface NextWebsocketConfig { export interface NextWebsocketConfig {
app: NextWebsocketApp; app: NextWebsocketApp;
} }
export interface WsRouteHandler { export interface WsRouteHandler {
upgrade?: (req: Request, socket: Duplex, head: Buffer<ArrayBuffer>) => void; upgrade?: (req: Request, socket: Duplex, head: NonSharedBuffer) => void;
post?: (req: Request) => void; post?: (req: Request) => void;
get?: (req: Request) => void;
} }
export class NextWebsocketApp { export class NextWebsocketApp {
handlers: Record<string, WsRouteHandler> = {}; handlers: Record<string, WsRouteHandler> = {};
websocketHandlers: ((ws: WebSocketServer) => void)[] = [];
on<K extends keyof WsRouteHandler>( on<K extends keyof WsRouteHandler>(
method: K, method: K,
@@ -21,17 +24,22 @@ export class NextWebsocketApp {
this.handlers[route][method] = handler; this.handlers[route][method] = handler;
} }
upgrade( wss(handler: (ws: WebSocketServer) => void) {
route: string, this.websocketHandlers.push(handler);
handler: (req: Request, socket: Duplex, head: Buffer<ArrayBuffer>) => void, }
) {
upgrade(route: string, handler: WsRouteHandler["upgrade"]) {
this.on("upgrade", route, handler); this.on("upgrade", route, handler);
} }
post(route: string, handler: () => void) { post(route: string, handler: WsRouteHandler["post"]) {
this.on("post", route, handler); this.on("post", route, handler);
} }
get(route: string, handler: WsRouteHandler["get"]) {
this.on("get", route, handler);
}
emit<K extends keyof WsRouteHandler>( emit<K extends keyof WsRouteHandler>(
method: K, method: K,
route: string, route: string,