尝试ping时节点WS崩溃

时间:2018-11-07 02:53:40

标签: node.js websocket

我正在使用此网络套接字库

https://github.com/websockets/ws

并设置此代码以测试我的websocket连接是否仍然打开

const interval = setInterval(function ping() {
  wss.clients.forEach(function each(ws) {
    if (ws.isAlive === false) {
      console.log("I am terminating");
      let obj = self.system._getClientByWs(ws)
      let tenant = obj.tenant
      self.system.deleteClient(obj, tenant)
      return ws.terminate();
    }
    ws.isAlive = false;
    console.log("Sending Ping");
    ws.ping(self.noop);
  });
}, 30000);

我在遇到错误

ws.ping(self.noop)

RangeError: Invalid WebSocket frame: invalid opcode 0
 at Receiver.getInfo 
 (/home/path/node_modules/ws/lib/receiver.js:182:16)
 at Receiver.startLoop 
 (/home/path/node_modules/ws/lib/receiver.js:121:22)
 at Receiver._write 
 (/home/path/node_modules/ws/lib/receiver.js:69:10)
 at doWrite (_stream_writable.js:334:12)
 at writeOrBuffer (_stream_writable.js:320:5)
 at Receiver.Writable.write (_stream_writable.js:247:11)
 at Socket.socketOnData 
 (/home/path/node_modules/ws/lib/websocket.js:788:35)
 at emitOne (events.js:96:13)
 at Socket.emit (events.js:188:7)
 at readableAddChunk (_stream_readable.js:176:18)
 at Socket.Readable.push (_stream_readable.js:134:10)
 at TCP.onread (net.js:548:20)

我目前在网上找不到太多原因,提出的唯一解决方案是添加错误处理,但这不是在ping方法上,而是在wss.on('connection')方法上

任何帮助将不胜感激!

0 个答案:

没有答案