【问题标题】:Pusher doesn't receive events after reconnect重新连接后 Pusher 未收到事件
【发布时间】:2017-06-25 03:12:42
【问题描述】:

我正在构建具有实时更新的浏览器应用程序。

应用程序允许在线与其他人一起阅读和编辑电子表格。

但是,有些人的互联网连接不佳,可能会出现断线。

我希望应用程序能够在重新连接互联网后更新到最新数据。

目前 Pusher 和应用程序的工作方式如下:

  1. Pusher 连接到服务器并接收事件。
  2. 其他人在电子表格中进行更改。
  3. 应用程序从 Pusher 接收这些更改,并能够将它们反映在电子表格中。
  4. Internet 有时会消失。
  5. Pusher 检测到这一点并自动尝试重新连接。
  6. 其他人在电子表格中进行更改。
  7. 应用程序无法接收这些更改,因为没有 Internet 连接。
  8. 一段时间后,例如 5 分钟,互联网连接似乎正常。
  9. 现在 Pusher 已成功重新连接到服务器。
  10. 但是,Pusher 不会接收没有 Internet 连接期间的事件(列表项 #6)。
  11. 其他人进行更改。
  12. Pusher 接收事件并且应用程序能够处理它们。

所以我的问题是:Pusher 在自动重新连接后没有收到其他人在断开互联网时触发的事件。

我正在使用默认的 Pusher 配置、私人频道、最新的稳定版本并且不做任何魔术。

【问题讨论】:

    标签: websocket real-time pusher collaboration


    【解决方案1】:

    Pusher 目前不提供此功能。要自己实现这一点,您必须为每条价值增加的消息发送一个数字 ID。您还需要将所有已发送消息的缓存存储在数据库中。客户可以跟踪他们收到的最后一个 ID。断开连接并重新连接后,他们可以向您的服务器发送一个请求,请求所有大于他们收到的最后一个消息 ID 的消息。您的服务器应响应与数据库中该查询匹配的消息。

    【讨论】:

    • 目前我有这样的实现,但没有使用纯 HTTP 请求的 Pusher。通常,它每 2 秒检查一次新事件并存储最后收到的事件 ID。然而这工作很慢,所以我决定改用 Pusher。
    • 我对 Pusher 很失望。文档中未描述此行为。
    • 谢谢你,威尔·休厄尔。我会将您的答案标记为已接受,并会尝试寻找 Pusher 的替代方案或保持我的实时模块不变。
    猜你喜欢
    • 2018-08-02
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 2017-05-03
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多