我刚刚开始使用 Pusher,到目前为止一切都很棒。
但我意识到,当我的用户打开和关闭或单击我网站中的内部链接时,连接会在页面卸载时自动断开连接。
这将使用户每次导航到新页面时都连接和断开连接。
有没有办法在用户浏览我的网站时保持用户的订阅和连接持久?
编辑:澄清一下,我理解Pusher在用户关闭浏览器或页面时断开连接的行为。我只是想知道如果该人访问同一站点内的另一个内部链接,我们如何保持连接活动。还是断开连接是最佳做法?如果是这样,为什么?
正如@devnull69所说,目前您需要创建应用程序,以便它不执行标准页面导航 - 您将应用程序构建为 SPA(单页应用程序)。这样,页面导航之间就不会有页面卸载和加载。
可以使用共享 Web 辅助角色在页面加载之间保持连接。但正如CanIUse所展示的那样,浏览器支持还不完美。
Pusher确实计划提供消息历史记录,这意味着在页面加载期间丢失的任何消息都可以在重新连接时获取。
另请参阅:
- 如何维护页面之间的WebSockets连接?
- 共享 Web 辅助角色是否在单个页面重新加载、链接导航中持续存在
唯一的解决方法是从常规页面刷新切换到 Ajax。这将使您能够保持 websocket 连接,同时仅加载使用 Ajax 请求更改的页面部分。