【问题标题】:Can a web worker or something similar handle window close events?网络工作者或类似的东西可以处理窗口关闭事件吗?
【发布时间】:2017-09-23 04:16:32
【问题描述】:

我正在开发一个项目,该项目将让用户打开选项卡,每个选项卡都连接到 PubNub 频道并监听事件。这些打开的选项卡随后会显示在管理选项卡中,因此用户可以看到所有连接的选项卡。目前,我们正在使用他们的存在来查看谁已连接,这还会触发显示加入、离开和超时消息的消息。

问题归结为如果用户只是关闭一个选项卡,我无法向频道发送取消订阅消息,因此我必须等待 PubNub 对该连接调用超时才能将其从管理选项卡中删除。我已经将他们的心跳选项调整得更短了,但是当这些连接关闭时,如果能在第二秒之前将其设置得更短,那就太好了。

我的想法可能是 Web Worker 或类似的东西,可能会产生简单的处理发送取消订阅消息,但据我了解,如果父页面不可用,这似乎是不可能的生成它会关闭?

有没有办法做这样的事情,或者我最好的办法是让超时生效并处理经理选项卡,直到超时被调用?

【问题讨论】:

  • WebWorker 可能是一个选项,但它高度依赖于浏览器。如果您不担心浏览器依赖性,那么您可以只依靠浏览器对 sendBeacon 或 onbeforeunload 事件的支持来取消订阅。但是您也可以在 Presence 插件上为您的 PubNub 键启用 TCP_FIN,这将在选项卡卸载时发送离开事件。不过要小心,因为如果您订阅了很多频道,这可能会导致页面卸载性能问题。如果这有帮助,如果您还有其他问题,请告诉我。
  • @CraigConover 太棒了!我不知道那是什么!谢谢!
  • 不知道我做了什么,但是 - 漂亮!很高兴这让你高兴;)将我的评论添加为官方答案。

标签: javascript web-worker pubnub


【解决方案1】:

PubNub 和浏览器窗口/选项卡关闭事件

WebWorker 可能是一个选项,但它高度依赖于浏览器。如果你不担心浏览器依赖,那么你可以只依赖浏览器对 sendBeacon 或 onbeforeunload 事件的支持来取消订阅。

但您也可以在 Presence 插件上为您的 PubNub 键启用 TCP_FIN,这将在标签页卸载时发送离开事件。不过要小心,因为如果您订阅了很多频道,这可能会导致页面卸载性能问题,因为这是一个阻塞调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多