0

我正在尝试手动断开我的客户与我的聊天的连接。让我展示我的基本代码:

...

<h1>welcome to my chat</h1>

<script>
$(function(){

    var mySocket = io.connect('/game1/roomGame);

    $('#force').click(function(event){
    mySocketdisconnect();
    })


});
</script>

在我的服务器中:

    mySocket.on('disconnect', function(){
             console.log(" disconnection forced ");
    }); 

在我的控制台中,离开路线时/game1/roomGame,我当然会看到消息disconnection forced,但我确信断开连接并没有真正完成,因为我还在控制台中看到了一些消息,例如:

   debug - emitting heartbeat for client f8oj63XfQ7T8mbNFP8SR
   debug - websocket writing 2::
   debug - set heartbeat timeout for client f8oj63XfQ7T8mbNFP8SR
   debug - got heartbeat packet
   debug - cleared heartbeat timeout for client f8oj63XfQ7T8mbNFP8SR
   debug - set heartbeat interval for client f8oj63XfQ7T8mbNFP8SR

我怎样才能关闭这个连接?

4

1 回答 1

1

你想打电话mySocketRoom.socket.disconnect()。将其公开为disconnect您的服务:

return {
  ...
  disconnect: function() { mySocketRoom.socket.disconnect(); }
};

此外,如果您的 gameRoom 仅在用户在某个控制器中时持续存在,$locationChangeStart并且$locationChangeSuccess看起来过于笼统。

每当控制器 $scope 被销毁时,我都会断开连接。

$scope.$on('$destroy', function() {
  mySocketRoom.disconnect();
});

文档:http ://docs.angularjs.org/api/ng.$ro​​otScope.Scope#$destroy

于 2013-04-26T17:32:39.437 回答