Je suis nouveau sur Nodejs et j'utilise websocket nodejs pour essayer de communiquer avec une application cliente. Ce dont j'ai besoin d'aide, c'est de fermer la connexion client en toute sécurité sans planter mon serveur nodejs. Plus spécialement, vérifiez s'il y a une connexion avant que le serveur nodejs ne renvoie un message au client.

Code d'application client

function tuneIn(){
    connection = new WebSocket('ws://localhost:8001');
    connection.onmessage = function (event) { 
        document.getElementById('currentScore').innerHTML=event.data;
    };
}

tuneInButton.addEventListener('click', tuneIn);

function tuneOut(){
    connection.close();
}
tuneOutButton.addEventListener('click', tuneOut);

Node js code

var ws = require("nodejs-websocket");

var server = ws.createServer(function (conn) {

    console.log("New connection");
    var score = 0;
    setInterval(function(){ 
        conn.sendText(score.toString());
        score++; 
    }, 1000);


    conn.on("disconnect", function (code, reason) {
        console.log("Connection closed")
    })
}).listen(8001)
0
axesspwns 8 nov. 2019 à 05:36

1 réponse

Pourquoi n'arrêtez-vous pas simplement le minuteur d'intervalle lorsque le websocket se déconnecte?

const ws = require("nodejs-websocket");

const server = ws.createServer(function (conn) {

    console.log("New connection");
    let score = 0;
    let timer = setInterval(function(){ 
        conn.sendText(score.toString());
        score++; 
    }, 1000);


    conn.on("disconnect", function (code, reason) {
        clearInterval(timer);
        console.log("Connection closed")
    })
}).listen(8001)
0
jfriend00 8 nov. 2019 à 04:36