我有一个运行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
被销毁时,我应该除了断开客户端与集线器之外的任何其他事情吗?
答案 0 :(得分:0)
为什么你没有使用this.hub.stop();