切断互联网连接时,Socket.IO不会触发客户端事件

时间:2017-04-09 19:24:19

标签: socket.io

我正在使用socket.io和js客户端一样:

this.connect = function(roomname) {
    var deferred = $q.defer();

    if(self.isConnected)        {
      deferred.$$reject('already connected');
      return deferred.promise;
    }
    self.isConnected = true;
    connectedRoom = roomName;

    socket = io('', {
      query: 'roomname=' + roomname
    });
    socket.on('connect', function() {
      console.log('socket client connected ' + socket.id);
      $rootScope.$broadcast('socketsConnected');

      socket.emit('room', roomName, function() {
        deferred.resolve();
      });
    });
    socket.on('reconnect', function() {
      self.isConnected = true;
      console.log('socket client reconnecting ' + socket.id);
    });
    socket.on('disconnect', function() {
      self.isConnected = false;
      console.log('socket client disconnecting ' + socket.id);
    });
    return deferred.promise;
  }

当我关闭服务器时,disconnect事件按预期触发。当我重新打开服务器时,会按预期触发reconnect

但是,如果我切换我的Wi-Fi,disconnect事件永远不会发生(我已经离开了几分钟)。

当我重新切换wi-fi时,reconnect事件不会触发,但它确实会重新建立连接,因为消息将会正确地发出和接收。

如何在失去Wi-Fi的情况下解决这些事件?

1 个答案:

答案 0 :(得分:2)

好的,我度过了漫长的一天。如果有人和我一样白痴,我的服务器与我的客户在同一台​​机器上,所以切割wi-fi没有效果!