Get connection status on Socket.io client

后端 未结 5 1785
被撕碎了的回忆
被撕碎了的回忆 2020-12-23 10:50

I\'m using Socket.io, and I\'d like to know the status of connection to the server from the client-side.

Something like this:

socket.status // return         


        
相关标签:
5条回答
  • 2020-12-23 11:30

    You can check whether the connection was lost or not by using this function:-

    var socket = io( /**connection**/ );
    socket.on('disconnect', function(){
    //Your Code Here
    });
    

    Hope it will help you.

    0 讨论(0)
  • 2020-12-23 11:33

    You can check the socket.connected property:

    var socket = io.connect();
    console.log('check 1', socket.connected);
    socket.on('connect', function() {
      console.log('check 2', socket.connected);
    });
    

    It's updated dynamically, if the connection is lost it'll be set to false until the client picks up the connection again. So easy to check for with setInterval or something like that.

    Another solution would be to catch disconnect events and track the status yourself.

    0 讨论(0)
  • 2020-12-23 11:34

    @robertklep's answer to check socket.connected is correct except for reconnect event, https://socket.io/docs/client-api/#event-reconnect As the document said it is "Fired upon a successful reconnection." but when you check socket.connected then it is false.

    Not sure it is a bug or intentional.

    0 讨论(0)
  • 2020-12-23 11:43

    Track the state of the connection yourself. With a boolean. Set it to false at declaration. Use the various events (connect, disconnect, reconnect, etc.) to reassign the current boolean value. Note: Using undocumented API features (e.g., socket.connected), is not a good idea; the feature could get removed in a subsequent version without the removal being mentioned.

    0 讨论(0)
  • 2020-12-23 11:47

    These days, socket.on('connect', ...) is not working for me. I use the below code to check at 1st connecting.

    if (socket.connected)
      console.log('socket.io is connected.')
    

    and use this code when reconnected.

    socket.on('reconnect', ()=>{
      //Your Code Here
    });
    
    0 讨论(0)
提交回复
热议问题