vendredi 19 novembre 2021

Why is WebSocket.onmessage firing three times for every message?

I have a WebSocket connection that is firing three times for every message received from the server.

I have also attached an print screen of the browser logs. enter image description here

I have verified that the server is sending the message only once. I am not sure what other details I can provide to explain this better. If any come to mind please write a comment and I will make sure to include them.

Thank you for your time :)

function openWebSocket() {
    socket = new WebSocket("ws://192.168.4.1/ws");
    
    socket.onopen = function(e) {
        setInterval(function() {
          // Call a function repetatively with 2 Second interval
          getServerValue("Programming_time");
            getServerValue("Write_request");
        }, 500); //mSeconds update rate
        console.log("socket opened!");
    };

    socket.onmessage = function(event) {
            //console.log(event.data);
            console.log("message received");
            console.log(event.data);
            ws_parse_message(event.data);
    };
    
    socket.onclose = function(event) {
      if (event.wasClean) {
        //alert(`[close] Connection closed cleanly, code=${event.code} reason=${event.reason}`);
      } else {
        // e.g. server process killed or network down
        // event.code is usually 1006 in this case
        //alert('[close] Connection died');
      }
    };
    
    socket.onerror = function(error) {
      //alert(`[error] ${error.message}`);
        console.log(error.message);
    };
}

function getServerValue(key) {
    socket.send(key);
}

function ws_parse_message(ws_message) {
    const parsedJson = JSON.parse(ws_message);
    if(parsedJson.json_type == "simple")
    {
        //console.log('Simple json received');
        //console.log(parsedJson);
        Object.keys(parsedJson).forEach(function(key) {
            if(key == "Programming_time")
            {
                console.log("programming time received" + parsedJson.Programming_time);
                if(parsedJson.Programming_time != "Undefined" && (!(isNaN(parsedJson.Programming_time))))
                {
                    document.getElementById('timeId').innerHTML = parsedJson.Programming_time;
                    if(parseInt(parsedJson.Programming_time) <= 0)
                    {
                        checkNumberPresentedCards();
                  //undisable buttons
                document.getElementById("btnAddCardId").classList.remove("disabled-button");
                document.getElementById("btnDoneId").classList.remove("disabled-button");
                    }
                }           
            }       
        });
    }
    else if(parsedJson.json_type == "cards")
    {
        console.log('Cards json received');
        //console.log(parsedJson);
        newCard = 1;
        cardsJson = parsedJson;
    document.getElementById("typeid").innerHTML = "Access Key programmed SN: " //myjson.card[0].type;
    document.getElementById("snid").innerHTML = cardsJson.card[0].sn;
        animateNotification();
        updatePresentedCards();
    }
}



Aucun commentaire:

Enregistrer un commentaire