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



>用户登录到应用程序,它会启动一个连接并注册一个处理程序以重新启动SignalR如果连接像这样丢失

connection.onclose(this.restartConnection);

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

connection.off('methodName');

当用户注销时,应用程序停止连接SignalR它不可避免地会触发onclose处理程序,最终导致我出错。我想取消注册处理程序,以便在应用程序故意停止连接后不会尝试重新启动。

我想过使用一个标志,如果它应该或不应该尝试重新启动连接,但这对我来说似乎不对。有没有适当的解决方案?

在最新版本的 SignalR 客户端上(似乎仍然没有记录的方法),您只需将onclose回调数组设置为清空自己:connection._closedCallbacks = [].

最新更新