【发布时间】:2017-09-23 04:16:32
【问题描述】:
我正在开发一个项目,该项目将让用户打开选项卡,每个选项卡都连接到 PubNub 频道并监听事件。这些打开的选项卡随后会显示在管理选项卡中,因此用户可以看到所有连接的选项卡。目前,我们正在使用他们的存在来查看谁已连接,这还会触发显示加入、离开和超时消息的消息。
问题归结为如果用户只是关闭一个选项卡,我无法向频道发送取消订阅消息,因此我必须等待 PubNub 对该连接调用超时才能将其从管理选项卡中删除。我已经将他们的心跳选项调整得更短了,但是当这些连接关闭时,如果能在第二秒之前将其设置得更短,那就太好了。
我的想法可能是 Web Worker 或类似的东西,可能会产生简单的处理发送取消订阅消息,但据我了解,如果父页面不可用,这似乎是不可能的生成它会关闭?
有没有办法做这样的事情,或者我最好的办法是让超时生效并处理经理选项卡,直到超时被调用?
【问题讨论】:
-
WebWorker 可能是一个选项,但它高度依赖于浏览器。如果您不担心浏览器依赖性,那么您可以只依靠浏览器对 sendBeacon 或 onbeforeunload 事件的支持来取消订阅。但是您也可以在 Presence 插件上为您的 PubNub 键启用 TCP_FIN,这将在选项卡卸载时发送离开事件。不过要小心,因为如果您订阅了很多频道,这可能会导致页面卸载性能问题。如果这有帮助,如果您还有其他问题,请告诉我。
-
@CraigConover 太棒了!我不知道那是什么!谢谢!
-
不知道我做了什么,但是 - 漂亮!很高兴这让你高兴;)将我的评论添加为官方答案。
标签: javascript web-worker pubnub