socket.io server very delayed in registering client disconnects

前端 未结 1 1131
谎友^
谎友^ 2020-12-18 13:30

I have a socket.io connection using xhr as its only transport. When I load up the app in the browser (tested in chrome and ff), the socket connects and everything works wel

相关标签:
1条回答
  • 2020-12-18 14:01

    After some more debugging, I noticed the following configuration in the socket.io Manager object:

    blacklist : ['disconnect']
    

    That causes this branch from namespace.js to not process the event:

    case 'event':
      // check if the emitted event is not blacklisted
      if (-~manager.get('blacklist').indexOf(packet.name)) {
        this.log.debug('ignoring blacklisted event `' + packet.name + '`');
      } else {
        var params = [packet.name].concat(packet.args);
    
        if (dataAck) {
          params.push(ack);
        }
    
        socket.$emit.apply(socket, params);
    }
    

    The change is detailed in this pull request https://github.com/LearnBoost/socket.io/pull/569. I understand why this is in place for XHR, since anyone could send an HTTP request with random session IDs trying to disconnect other users from the server.

    What I plan to do instead is to check each new connection for an existing session id in the server, and make sure to run my disconnect logic before continuing with the connection logic.

    0 讨论(0)
提交回复
热议问题