diff --git a/basesocket.js b/basesocket.js index 992679e..5ecff5c 100644 --- a/basesocket.js +++ b/basesocket.js @@ -2,18 +2,18 @@ const ws = require('ws') const webtoken = require('wo-base-webtoken') const my = { - wssServer: undefined, + wsServer: undefined, socketPool: {}, listeners: {}, } module.exports = { initSocket (webServer) { - my.wssServer = new ws.Server({ server: webServer }) - console.info('App Socket Server attached to web server.') + my.wsServer = new ws.Server({ server: webServer }) + console.info('Base Socket Server is initialized.') - my.wssServer.on('connection', (socket, req) => { - console.info(`A socket from App Client is connected from ${req.connection.remoteAddress}:${req.connection.remotePort}.`) + my.wsServer.on('connection', (socket, req) => { + console.info(`A socket is connecting from ${req.connection.remoteAddress}:${req.connection.remotePort}.`) // socket.isAlive = true // socket.on('pong', function() { console.log('👈 ASS: on Pong'); this.isAlive = true }) @@ -32,7 +32,7 @@ module.exports = { dataObj._passtokenSource = webtoken.verifyToken(dataObj._passtoken) // todo: 为防止前端欺骗,应当用和login里类似的方法来检查来检查 if (typeof dataObj._passtokenSource?.uuid === 'string') { my.socketPool[dataObj._passtokenSource.uuid] = socket - console.log('收到Login 成功的消息,绑定socket', Object.keys(my.socketPool)) + console.log('收到 Login 成功的消息,绑定socket', Object.keys(my.socketPool)) } } @@ -43,6 +43,15 @@ module.exports = { }) }) + // 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) }) + return this }, @@ -60,7 +69,7 @@ module.exports = { }, sendToAll (dataObj) { - my.wssServer.clients.forEach((socket) => { + my.wsServer.clients.forEach((socket) => { if (socket.readyState === socket.OPEN) { socket.send(typeof dataObj !== 'string' ? JSON.stringify(dataObj) : dataObj) } else {