From 00f83d805a7a80d51352501e5f2ef60994504887 Mon Sep 17 00:00:00 2001 From: undefined Date: Mon, 14 Nov 2022 20:04:20 +0800 Subject: [PATCH] core: catch websocket errors --- packages/hydrooj/src/service/server.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/hydrooj/src/service/server.ts b/packages/hydrooj/src/service/server.ts index 41ab4fbd7..0f86fe1bd 100644 --- a/packages/hydrooj/src/service/server.ts +++ b/packages/hydrooj/src/service/server.ts @@ -497,6 +497,12 @@ ${ctx.response.status} ${endTime - startTime}ms ${ctx.response.length}`); layers.forEach((layer) => app.use(layer as any)); app.use((ctx) => handle(ctx, NotFoundHandler, () => true)); wsServer.on('connection', async (socket, request) => { + socket.on('error', (err) => { + logger.warn('Websocket Error: %s', err.message); + try { + socket.close(1003, 'Websocket Error'); + } catch (e) { } + }); const ctx: any = app.createContext(request, {} as any); await domainLayer(ctx, () => baseLayer(ctx, () => layers[1](ctx, () => userLayer(ctx, () => { })))); for (const manager of router.wsStack) {