SignalR 在停止后尝试连接

SingalR trying to connect after stop

我遇到了 signalR 的奇怪行为。我只在一个组件上使用它(vue.js 在我的 ui 上)。 当用户在销毁事件中导航到另一个页面(我有 spa 应用程序)时,我试图关闭连接。我正在尝试两种选择:

JS: connection.stop();
BE: i catch disconnect message in public override Task OnDisconnectedAsync method

JS: connection.invoke('Resource', params);
BE: await Groups.RemoveFromGroupAsync(Context.ConnectionId, "<group name>");

连接已成功关闭,但一段时间后(~15-20 秒)signalR 再次尝试连接到服务器(但组件不存在于元素块中)。一段时间后连接恢复,但该组件不存在。如果我刷新我的 spa 页面(使用 F5)signalR 没有尝试连接,但是如果我使用 signalR 打开组件,情况又开始了。

也许有人可以帮助我:

  1. 为什么会这样?
  2. 我应该如何断开客户端和服务器

我找到了。我已经创建了一个空的断开连接处理程序并尝试捕获连接。

public override Task OnDisconnectedAsync(Exception? exception) { //breakpoint here; }

一些开发人员在应用程序上添加了另一个 SignalR 集线器(例如 UI 上的另一个组件)并且忘记在组件卸载时调用关闭。

this.connection.stop()

所以,不要忘记停止 UI 和后端服务器之间的 SignalR 连接。