0
私はウェブソケットの使い方を学んでいます。私はサーバーからフロントエンドにデータを返信しています。通常はws.send
ですが、同時に私はクリントがまだ生きているかどうかを調べるために、フロントエンドにpingを送信するように設定しています。コード私は現時点で使用しています。フロントエンドからの応答がない場合、私は最初のハートビートがここで私がwebsocket ping with node js
を送信した後、私はのWebSocketを終了します、わずか300秒を待ちたい
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);
});
});
は私のフロントエンドコードです。今起こっていただきました
ws.onopen = function(){
console.log("Connected");
}
ws.onclose = function(){
console.log("Disconnected");
ws.send('Disconnected');
}
は、私は、フロントエンドで、ブラウザを閉じたとき、私はそれをCONSOLE.LOG場合は、バックエンドでのサーバーはまだ、pingを実行されることです。あなたがここclearInterval
でタイムアウトをクリアする必要があり
あなたは、クライアント 'とはどういう意味ですかいますまだ生きている? –
@BrahmaDev Client(ブラウザ内) - ブラウザを閉じると、ブラウザは消えてしまいます。 –
ブラウザを閉じると、WebSocketの接続も切断されます。 'ws.clients'でそれらを見つけるべきではありません。 –