【问题标题】:SignalR .Net 2.4.1-Dead Connection Id Staying AliveSignalR .Net 2.4.1-死连接 ID 保持活跃
【发布时间】:2021-11-19 00:45:50
【问题描述】:

我看到我的 SignalR 客户端 (Android) 出现奇怪的行为。 OnDisconnected 事件正在触发,连接失效,但我的集线器中止事件并重新发出连接 ID 作为新连接:

这似乎发生在 Android 客户端进入缓慢状态时。它弄乱了我的 UI 上的状态指示器,显示用户仍处于连接状态,但他们已注销。处理这种情况的最佳方法是什么?当我的连接速度很慢时,我应该停止集线器并重新连接吗?我曾考虑从集线器获取连接 ID,但无法指示连接是活动的还是死的。

【问题讨论】:

  • 你用的是Java客户端还是JS客户端?如果是 Java,请注意 SignalR Java 客户端不再维护。 github.com/SignalR/…。它是 JS,有一个连接,但已在 v2.4.2 中为 Chrome 修复。
  • 如果您使用多个背板,您的服务器是否有任何背板?
  • @eglease 我没有使用负载均衡器。 Azure 上的单个服务器。我正在使用 Java 客户端,但无法升级到较新的信号。相信我,我愿意!! :)
  • 您可以更改或编辑 Java 客户端吗?
  • 查看您的客户端和集线器源代码可能会有所帮助。你能重现这个问题吗?

标签: signalr


【解决方案1】:

我遇到了类似的情况(使用 .NET 客户端),最终不得不实现一个心跳集线器,其中每 15 秒向每个客户端发送一条简单的消息(心跳)。客户端有一个计时器,用于监听心跳并在收到新的心跳时重置。

如果错过了两次心跳,客户端关闭连接,等待几秒钟,然后打开一个新的。无法关闭与服务器的连接。这应该允许服务器从客户端获取关闭连接消息并实际终止连接。

请注意,不再维护 SignalR Java 客户端。 https://github.com/SignalR/java-client#this-repository-is-obsolete-and-no-longer-used-or-maintained.

【讨论】:

    猜你喜欢
    • 2011-05-21
    • 2011-08-07
    • 2020-12-06
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    相关资源
    最近更新 更多