【发布时间】:2017-01-30 23:13:29
【问题描述】:
我有一个运行 SignalR、Angular 和 Typescript 的页面。当当前的$scope 被破坏(如页面更改)时,我尝试断开客户端与 SignalR 服务器的连接:
Controller.ts
$scope.$on("$destroy", () => Service.Disconnect());
我的前端服务就有这个功能:
Service.ts
public Disconnect() {
this.hub.disconnect();
}
因此,当我更改页面时,客户端会断开与集线器的连接。正如我在控制台中看到的那样,这非常有效:
SignalR:停止连接。
SignalR:关闭 Websocket。
SignalR: 触发 ajax abort async = true。
SignalR:停止对 keep alive 的监控。
完美运行。但是,当我随后加载新状态并再次设置连接时,旧连接会以某种方式“保留”,因为它会尝试连接两次。如果我然后转到另一个页面并再次返回,它会尝试连接 3 次。
编辑
似乎stateChanged 被多次调用。多次是调用连接设置的次数。嗯,当我断开客户端与集线器的连接时,我想知道为什么会这样。用我第一次连接时设置的一个简单的if already connected 变量修复了它,但它不是很好。
是否有适当的方法断开客户端?服务器/后端集线器是否也应该处理断开连接?当$scope 被销毁时,除了断开客户端与集线器的连接外,我还应该做什么?
【问题讨论】:
-
你找到合适的断开集线器了吗?我在带有信号器的 Ionic 2 中面临同样的问题
-
您找到解决此问题的方法了吗?我遇到了完全相同的问题。
标签: angularjs typescript signalr