gpt4 book ai didi

javascript - 互斥锁(JS)在浏览器的多个选项卡之间共享?

转载 作者:可可西里 更新时间:2023-11-01 02:48:32 33 4
gpt4 key购买 nike

有没有办法让浏览器中的两个选项卡共享一个 Mutex(在 JavaScript 中)?

我正在使用 node.js 和 socket.io 开发一个网络应用程序,我希望各个选项卡与服务器共享一个连接。所谓的“领导者”选项卡是唯一保持连接的选项卡,而发送给其余选项卡的消息都通过此选项卡进行中继。现在,我正在使用领导者选举算法来选择领导者,但考虑到如果当前领导者出现故障,重新选举新领导者需要一两秒钟,我想知道是否有更好的方法来做到这一点一样。

最佳答案

这实际上已经被添加到浏览器中,它被称为 Web Locks API .

领导者选举就像获取给定名称的独占锁一样简单,然后根据需要持有它。

let abdicate; // function that releases the lock

navigator.locks.request("takemetoyourleader", lock => {
console.log("wow I just won the election");

return new Promise(resolve => {
abdicate = resolve;
});
});

通过返回一个没有解析的 Promise,锁会被无限期地持有。当持有锁的tab关闭时,锁会自动解除,同源的不同tab可以获得。

请注意,持有锁将取消您的网站使用 bfcache 的资格。 ,因此您可能希望实现 pagehide/pageshow 监听器以手动释放/重新获取此锁。

关于javascript - 互斥锁(JS)在浏览器的多个选项卡之间共享?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987272/

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