diff --git a/basesocket.js b/basesocket.js index 17c2be6..3b7e345 100644 --- a/basesocket.js +++ b/basesocket.js @@ -20,10 +20,10 @@ module.exports = { socket.on('message', (data) => { // 在这里统一分发消息 - console.log('App Socket Client message: ', data) let dataObj try { dataObj = JSON.parse(data) + console.log('收到 App Socket Event: ', dataObj?.skevent) } catch (exception) { console.log(new Date().toJSON(), 'Unable to parse socket message: ', data) return @@ -32,12 +32,15 @@ module.exports = { dataObj._passtokenSource = webtoken.verifyToken(dataObj._passtoken) if (typeof dataObj._passtokenSource?.usid === 'string') { my.socketPool[dataObj._passtokenSource.usid] = socket + socket.usid = dataObj._passtokenSource.usid console.log( - dataObj.skevent === 'SOCKET_OWNER' ? 'Login 成功' : 'Reconnect 成功', + dataObj.skevent === 'SOCKET_OWNER' ? 'Login' : 'Reconnect', '绑定 socket 到', dataObj._passtokenSource.usid, 'socketPool.length =', - Object.keys(my.socketPool)?.length + Object.keys(my.socketPool)?.length, + ', socket clients size =', + my.wsServer.clients.size ) } } @@ -47,16 +50,21 @@ module.exports = { listener(dataObj) } }) - }) - // const heartbeat = setInterval(() => { - // my.wsServer.clients.forEach((socket) => { - // if (socket.isAlive === false) return socket.terminate() - // socket.isAlive = false - // socket.ping(function() { wo.cclog('👉 ASS: sent Ping') }) - // }) - // }, 30000) - // my.wsServer.on('close', () => { clearInterval(heartbeat) }) + // const heartbeat = setInterval(() => { + // my.wsServer.clients.forEach((socket) => { + // if (socket.isAlive === false) return socket.terminate() + // socket.isAlive = false + // socket.ping(function() { wo.cclog('👉 ASS: sent Ping') }) + // }) + // }, 60000) + + socket.on('close', () => { + console.log('Closing socket of usid =', socket?.usid) + delete my.socketPool[socket?.usid] + // clearInterval(heartbeat) + }) + }) return this },