J'apprends comment utiliser les websockets. Je retourne des données à l'interface depuis le serveur via le ws.send
normal mais je voudrais en même temps avoir un intervalle de temps donné pour envoyer une requête ping à l'interface pour voir si les clints sont toujours en vie là-bas. code que j'utilise en ce moment.websocket ping avec node js
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);
});
});
Je veux simplement attendre 300 secondes, s'il n'y a pas de réponse de la fin avant que je vais mettre fin à la websocket après le premier battement de coeur envoyer par moi
Voici mon code frontal.
ws.onopen = function(){
console.log("Connected");
}
ws.onclose = function(){
console.log("Disconnected");
ws.send('Disconnected');
}
Ce qui est produit maintenant est que, quand je ferme le navigateur dans le frontal du serveur dans le back-end est encore CLIQUETIS, si je CONSOLE.LOG il.
Que voulez-vous dire par 'client sont toujours vivant'? –
@BrahmaDev Client (dans le navigateur) - s'ils ferment le navigateur, ils sont partis, c'est ce que je voulais dire. –
Si ils ferment le navigateur, la connexion websocket est également parti. Vous ne devriez plus les trouver dans 'ws.clients'. –