From 3ea27d747faca442722d40b56e6f849bb3f6b6d5 Mon Sep 17 00:00:00 2001 From: jiangchen <1703935164@qq.com> Date: Tue, 1 Sep 2026 14:28:20 +0800 Subject: [PATCH] fix: only require userId on hello; add package-lock --- package-lock.json | 40 ++++++++++++++++++++++++++++++++++++++++ server.js | 18 ++++++++++++------ 2 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..33044f0 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,40 @@ +{ + "name": "dshwatch-server", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "dshwatch-server", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "ws": "^8.18.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/ws": { + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/server.js b/server.js index 4d95a3c..9da2051 100644 --- a/server.js +++ b/server.js @@ -170,17 +170,23 @@ function handleMessage(ws, raw) { return; } if (!msg || typeof msg !== 'object') return; - const userId = msg.userId; - if (typeof userId !== 'string' || userId.length === 0) { - send(ws, { type: 'auth-error', message: 'missing userId' }); - ws.close(); - return; - } if (msg.type === 'hello' && !ws.role) { + const userId = msg.userId; + if (typeof userId !== 'string' || userId.length === 0) { + send(ws, { type: 'auth-error', message: 'missing userId' }); + ws.close(); + return; + } if (msg.role === 'dsh') handleDshHello(userId, ws, msg); else handleClientHello(userId, ws, msg); return; } + const userId = userIdOf(ws); + if (!userId) { + send(ws, { type: 'auth-error', message: 'hello required' }); + ws.close(); + return; + } if (ws.role === 'dsh') { handleHarnessMessage(userId, ws, msg); } else if (ws.role === 'client') {