我正在开发一个项目,让用户打开每个连接到PubNub频道并监听事件的标签。然后,这些打开的选项卡将显示在管理选项卡中,以便用户可以查看所有已连接的选项卡。目前,我们正在使用他们的状态来查看谁已连接,这也会触发显示加入,离开和超时消息的消息。
问题归结为如果用户只是关闭了一个标签,我就不能向该频道发送取消订阅消息,因此我必须等待PubNub在该连接上调用超时以将其从管理中删除标签。我已经将他们的心跳选项缩短了很多,但是当这些连接关闭时,将它更多地放到第二个位置真的很好。
我的想法可能是一个Web Worker或类似的东西,可能会产生简单的照顾发送取消订阅消息,但似乎可能是不可能的,因为从我的理解,如果父页面,那么Web工作者变得无法使用它会被关闭吗?
有没有办法做这样的事情,或者我最好的办法是让超时生效并处理经理选项卡,等待超时被调用?
答案 0 :(得分:0)
WebWorker可能是一个选项,但它依赖于浏览器。如果您不担心浏览器依赖性,那么您可以依靠浏览器对sendBeacon或onbeforeunload事件的支持来进行取消订阅。
但您也可以在PubNub密钥的Presence插件上启用TCP_FIN
,这将在卸载选项卡时发送离开事件。但是要小心,因为这可能会导致页面卸载性能问题,如果您订阅了很多频道,因为它是一个阻塞调用。