在SignalR中销毁$ destroy时破坏连接

时间:2016-09-22 11:37:45

标签: angularjs typescript signalr

我有一个运行SignalR,Angular和Typescript的页面。当前$scope被破坏(如页面更改)时,我尝试断开客户端与SignalR服务器的连接:

Controller.ts

$scope.$on("$destroy", () => Service.Disconnect());

我的前端服务有这个功能:

Service.ts

public Disconnect() {
    this.hub.disconnect();
}

因此,当我更改页面时,客户端会断开与集线器的连接。正如我在控制台中看到的那样,这非常有效:

  

SignalR:停止连接。

     

SignalR:关闭Websocket。

     

SignalR:Fired ajax abort async = true。

     

SignalR:停止监控保持活动状态。

完美无缺。但是,当我然后加载一个新状态并再次设置我的连接时,旧连接以某种方式“保持”,因为它然后尝试连接两次。如果我然后转到另一页并再次返回,它会尝试连接3次。

修改

似乎多次调用stateChanged。多次是调用连接设置的次数。嗯,当我断开客户端与集线器的连接时,我想知道为什么会这样做。使用我第一次连接时设置的简单if already connected变量修复了它,但它并不是很好。

是否有正确的方法断开客户端?服务器/后端集线器是否应该处理断开连接?当$scope被销毁时,我应该除了断开客户端与集线器之外的任何其他事情吗?

1 个答案:

答案 0 :(得分:0)

为什么你没有使用this.hub.stop();