gpt4 book ai didi

javascript - 如何使用 SignalR 处理移动设备上的断开连接事件?

转载 作者:行者123 更新时间:2023-11-27 22:59:31 25 4
gpt4 key购买 nike

我有几台运行网络应用程序的 iPad。 Web 应用程序通过 signalR 与服务器通信。原因是服务器需要将特定的数据发送到特定的iPad。因此,它需要跟踪哪个 iPad 处于打开/关闭状态。

iPad 有以下方法使应用程序进入休眠状态。

  1. iPad 进入休眠状态
  2. 用户终止了 Safari
  3. iPad 内存不足

如何在服务器上检测这些?所以我知道不要向他们发送数据。我尝试过断开连接事件,但这需要一些时间才能触发(默认情况下为 45 秒左右)。

最佳答案

简短的回答是,在连接超时之前您无法确定,因为在此之前 SignalR 不会知道。

即使在看起来最有可能导致您可以捕获某种信号的情况下 - iPad 转换到待机状态 - 也没有任何通知表明您可以在 JavaScript 代码中获取让您在之前整理连接的信息就会发生这种情况。

根据您发送到客户端的数据的性质,您可以通过切换到数据可用通知格式来最小化缓冲,在这种格式中,服务器向客户端发送最小数据包以通知其数据正在等待被检索,然后让客户端请求该信息。在某些情况下,这可以大大减少应用程序或传输层中缓冲的数据量。

当然,如果每个通知有几千字节的数据,并且必须将它们全部保留以便顺序传递,这只会减少传输层的缓冲,将其后退一步并使其成为应用程序的责任。

另一个选项是让客户端发送从 JS 计时器实例运行的心跳。每隔一秒左右(取决于您需要的实时性),客户端就会调用服务器上的一个方法,该方法本质上只是让您知道哪些仍然处于事件状态。在几次失败的 checkin 之后(例如 5 次错过心跳),您可以假设客户端已经消失并停止向其发送信息。服务器需要跟踪每个客户端连接的最后一次心跳,并且每次您想要向特定客户端发送某些内容时,只需检查它最近是否已 checkin 。如果没有,请让数据提供者知道客户端处于离线状态,直到它再次 checkin ,此时您可能需要告诉它重新加载并重新开始。

关于javascript - 如何使用 SignalR 处理移动设备上的断开连接事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37244408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com