У меня есть веб-сокет Node, и я пытаюсь определить, когда клиент отключается.Я попробовал следующий код для документов, но я все еще не могу определить закрытие ...
const wss = new WebSocket.Server({
server: this.server
});
this.wss = wss;
this.wss.on('connection', function connection(ws) {
Logger.log("verbose", `Web socket is now alive`);
ws.isAlive = true;
ws.on("pong", function(){
Logger.log("verbose", `Web socket pong`);
console.log(`the pong is ${this.isAlive} ${ws.isAlive}`);
this.isAlive = true;
});
});
setInterval(()=>{
console.log(`Setting the interval ${wss.clients.length}`);
wss.clients.forEach(function each(ws) {
if (ws.isAlive === false){
Logger.log("verbose", `The web socket died`);
return ws.terminate();
}
ws.isAlive = false;
ws.ping(()=>{});
});
}, 30000);
Однако, кажется, что wss.clients пуст, прежде чем он может быть обнаружен.Как определить фактическое закрытие соединения?
Обновление
Также пробовал событие закрытия и функцию onclose, но ни одна из них не выполняет то, что я ищу.