我正在尝试手动断开我的客户与聊天的连接。让我展示一下我的基本代码:
...
<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
如何关闭这个连接呢?
答案 0 :(得分: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.$rootScope.Scope#$destroy