如何在JavaScript SignalR客户端中注销onclose事件处理程序

问题描述 投票:1回答:1

用户登录到应用程序并启动连接并注册处理程序以重新启动SignalR连接(如果像这样丢失)

connection.onclose(this.restartConnection);

我浏览了HubConnection.ts,但没有找到任何删除onclose处理程序的选项。它不能用空方法代替,因为它存储了所有已注册的方法。然后只有一个选项可以通过

删除自定义处理程序

connection.off('methodName');

[当用户注销时,应用程序将在其处停止SignalR连接,这不可避免地会触发onclose处理程序,最终对我来说是错误。我要注销处理程序,以便在应用程序故意将其停止后,连接将不会尝试重新启动自身。

我考虑过使用一个标志来决定是否应该尝试重新启动连接,但这对我来说似乎不正确。有适当的解决方案吗?

javascript react-native signalr signalr.client
1个回答
0
投票

不知道这是否能回答确切的问题,但是在AngularJS $ scope中,可以像这样完成onclose事件处理程序的注销:

connection.onclose(onCloseHandler);

var onCloseHandler = function() {
    // Your callback function's contents...
}

$scope.$on('$destroy', function () {
    onCloseHandler();
});
© www.soinside.com 2019 - 2024. All rights reserved.