0
我正在学习如何使用websockets。我通过正常的ws.send
将数据返回到服务器的前端,但我同时希望有一个设定的间隔时间来ping前端,以查看是否存在clints仍然存在..这是我目前使用的代码。带节点js的websocket ping
ws.on('connection', function connection(ws, req) {
ws.on('message', function incoming(message) {
return_data = message;
heart_beat = {status:"Accepted", currentTime:"2013-02-01T20:53:32.486Z", "heartbeatInterval":300}
ws.send(JSON.stringify(heart_beat));
const interval = setInterval(function ping() {
ws.clients.forEach(function each(ws) {
if (ws.isAlive === false) return ws.terminate();
ws.isAlive = false;
ws.ping('', false, true);
});
}, 300);
});
});
我只想等待300秒,如果没有从前端响应由我
这里是我的前端代码发送第一个心跳后,我将终止WebSocket的。
ws.onopen = function(){
console.log("Connected");
}
ws.onclose = function(){
console.log("Disconnected");
ws.send('Disconnected');
}
请告诉我现在发生的事情是,当我关闭在前端的浏览器在后端服务器仍然可以ping通,如果我CONSOLE.LOG它。
你所说的'客户端的意思是被还活着吗? –
@BrahmaDev客户端(在浏览器中) - 如果他们关闭了浏览器,他们不在了,那就是我的意思。 –
如果他们关闭浏览器,websocket连接也不见了。你不应该再在'ws.clients'中找到它们。 –