From b5e821855135eb3d56facb569a8298fa5fe1a49c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=89=8B=E7=93=9C=E4=B8=80=E5=8D=81=E9=9B=AA?= Date: Sun, 11 Aug 2024 10:29:21 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20=E6=AD=A3=E5=90=91ws=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/onebot/network/passive-websocket.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/onebot/network/passive-websocket.ts b/src/onebot/network/passive-websocket.ts index 60bb6c9c..73c9be1d 100644 --- a/src/onebot/network/passive-websocket.ts +++ b/src/onebot/network/passive-websocket.ts @@ -68,7 +68,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.authorize(token, wsClient, wsReq); wsClient.on('message', (message) => { - this.handleMessage(wsClient, message); + this.handleMessage(wsClient, message).then().catch(this.logger.logError); }); wsClient.once('close', () => { this.wsClientsMutex.runExclusive(async () => { @@ -118,6 +118,7 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.logger.logError('Cannot open a closed WebSocket server'); return; } + this.logger.log('WebSocket server started', this.wsServer.address()); this.isOpen = true; this.registerHeartBeat(); } @@ -148,9 +149,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { } } - private handleMessage(wsClient: WebSocket, message: any) { + private async handleMessage(wsClient: WebSocket, message: any) { let receiveData: { action: ActionName, params?: any, echo?: any } = { action: ActionName.Unknown, params: {} }; - let echo = null; + let echo = undefined; try { try { receiveData = JSON.parse(message.toString()); @@ -160,6 +161,9 @@ export class OB11PassiveWebSocketAdapter implements IOB11NetworkAdapter { this.WsReply(OB11Response.error('json解析失败,请检查数据格式', 1400, echo), wsClient); } receiveData.params = (receiveData?.params) ? receiveData.params : {};//兼容类型验证 + let retdata = await this.actionMap.get(receiveData.action)?.websocketHandle(receiveData.params, echo || ""); + const packet = Object.assign({}, retdata); + this.WsReply(packet, wsClient); } catch (e) { this.WsReply(OB11Response.error('不支持的api ' + receiveData.action, 1404, echo), wsClient); }