From 930a81dbff8131b8b4ff3601d15412ad1460e7cd Mon Sep 17 00:00:00 2001 From: Luk Lu Date: Thu, 16 Mar 2023 08:08:56 +0800 Subject: [PATCH] u --- unisocket.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/unisocket.js b/unisocket.js index ba7ef2f..e43eb4b 100644 --- a/unisocket.js +++ b/unisocket.js @@ -36,11 +36,11 @@ export default { my.socket.onMessage(({ data }) => { // 在这里统一分发消息(用户端通常不需要返回结果给服务器,因此不用 rpc 模式,而用 event 模式。 try { - let dataObj = JSON.parse(data) - console.log('WebSocket onMessage for skevent: ', dataObj.skevent) - let listeners = my.listeners[dataObj.skevent] || [] + let { skevent, ...apiWhat } = JSON.parse(data) + console.log('WebSocket onMessage for skevent: ', skevent) + let listeners = my.listeners[skevent] || [] for (let listener of listeners) { - listener(dataObj) + listener(apiWhat) } } catch (exception) { console.log(new Date().toJSON(), 'unknown message', data) @@ -57,6 +57,11 @@ export default { delete my.reconnecting }, 2000) }, + initListener (skevent, listener) { + // 当该 skevent 尚不具有任何 listener 时,添加本 listener + my.listeners[skevent]?.length > 0 || this.addListener(skevent, listener) + return this + }, addListener (skevent, listener) { if (Array.isArray(my.listeners[skevent]) && typeof listener === 'function') { my.listeners[skevent].push(listener)