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