Improved some stuff
This commit is contained in:
@@ -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
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user