2017-04-09 74 views
0

我使用socket.io与JS客户端,像这样的时候不费一枪客户端事件:Socket.IO切断互联网连接

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事件永远不会触发(我已经离开了好几分钟)。

当我在reconnect事件中切换回wi-fi没有触发时,它似乎会重新建立连接,因为这些消息会正确发送和接收。

我怎样才能得到这些事件火上失去的Wi-Fi?

回答

2

好吧,我有一个漫长的一天。如果有人像我一样白痴,我的服务器与我的客户端在同一台机器上,所以切断Wi-Fi无效!

+0

这是一个很好的一个。那时候你知道现在是时候休息一下编程,去做一些其他的事情了。 – jfriend00