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'中找到它們。 –