【问题标题】:SingalR trying to connect after stopSignalR 在停止后尝试连接
【发布时间】:2021-12-02 15:03:28
【问题描述】:

我在使用 signalR 时遇到了一种奇怪的行为。我只在一个组件上使用它(我的 ui 上的 vue.js)。 当用户在破坏事件中导航到另一个页面(我有 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. 我应该如何断开客户端和服务器

【问题讨论】:

    标签: javascript asp.net .net signalr


    【解决方案1】:

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

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

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

    this.connection.stop()
    

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

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多