我正在使用此网络套接字库
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')方法上>
任何帮助将不胜感激!