gpt4 book ai didi

javascript - Chrome : Solving limited number of WebSockets (possibly with localStorage)

转载 作者:行者123 更新时间:2023-12-03 07:50:47 26 4
gpt4 key购买 nike

根据这篇文章https://code.google.com/p/chromium/issues/detail?id=429419以及我为验证该限制是否真实而进行的一些测试 - 我知道我可以打开的 WebSocket 数量是有限的。

问题是我有时需要超过 30 个 Websockets,因为用户可能会打开 30 个选项卡。

我想知道在不同选项卡之间共享 webSocket 池的最佳方式是什么。以下是我想到的一些想法,我很想听听其他可能的想法:

  1. 在一个主窗口中分配一个 webSocket 池,作为全局可访问的元素,然后确保所有其他选项卡都是该主页的子选项卡。然后我可以使用选项卡间通信:

    window.parent...

问题是并非所有选项卡都创建为主窗口的子窗口,并且该主窗口可能会关闭。

  • 以某种方式“在本地存储中”分配一个 webSocket 池 - 我对本地存储不太熟悉,但我认为至少它可以以某种方式保存对当前管理 webSockets 的主选项卡的引用。每隔一段时间,其他选项卡就会尝试将自己设置为主选项卡。
  • 我知道这听起来很糟糕而且很麻烦。但是在访问本地存储时如何编写线程/进程安全的代码呢?任何例子将不胜感激。

  • 很想听听您的任何其他建议。
  • 最佳答案

    数字 2 不起作用,因为 LocalStorage 仅限于字符串类型。

    我会推荐looking at ServiceWorkers

    A single service worker can control many pages. Each time a page within your scope is loaded, the service worker is installed against that page and operates on it.

    这听起来非常接近你想要的。注册一个 ServiceWorker,它只接受消息并将其重新广播给客户端 - 来自您域的任何页面。因此,您可以拥有一个创建 WebSocket 连接的主页,每次收到推送时,它都会通过 ServiceWorker 消息传递系统广播一条消息。其他选项卡可以根据需要选择它。

    或者,您可以使用 shared WebWorker基于同样的原则。只需将其安装为从 WebSocket 广播消息的消息传递系统即可。

    这些并不完全是这些技术的预期用途......但如果它有效,它就有效。

    关于javascript - Chrome : Solving limited number of WebSockets (possibly with localStorage),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34999337/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com