javascript - 多个选项卡的冗余 HTML 通知
问题描述
我的页面使用 socket.io 进行实时通知。它运作良好。但是,打开多个选项卡(即https://mypage.com/、https://mypage.com/settings、https://mypage.com/list)会导致多个通知。
我知道 facebook web 使用新帖子或新消息的通知,并且该通知是独一无二的。(尽管有几个标签!)我想知道这怎么可能。
我尝试通过 ip 对套接字进行分类并向其中一个发送通知。但它并不华丽。
有没有其他方法或策略来获得独特的通知?
解决方案
在服务器端,我添加了标识每个通知的“通知计数”,并使用原始数据提供该值。
在客户端,使用 localStorage 在选项卡之间共享“noti count”值,验证此通知事件是否已显示。
localStorage.getItem 和 localStorage.setItem 很慢,并且套接字事件同时到达,因此来自 localStorage 的“noti count”值不会被其他选项卡更新。
我为每个事件添加了 setTimeout 等待 0~10000 毫秒。最后,socket 显示了唯一的通知!
但是当随机超时彼此相似时,getItem 会在 setItem 更新“通知计数”之前获取值。在这种情况下,显示冗余通知。(起初,我将随机超时设置为 0~1000,显示了很多冗余通知)增加随机超时的最大值会增加稳定性到不幸的是类似的超时。但也增加了秩序保障的风险。
为确保通知顺序,添加通知队列并调整随机超时以弹出通知。
推荐阅读
- c# - 如何在 Unity 中使 UI 看起来像 Pixel Perfect?
- java - 使用的 lambda 表达式中未触发断点 n CompletableFuture.supplyAsync(Supplier) (不是由于延迟执行)
- c# - 下拉值需要传入repeater控件绑定方法
- android - 获取 Android Dialog Window 的实际偏移量
- c# - 如何有效地通过网络发送受约束的双精度值
- python - 在 `tortoise.field.ForeignKeyField` 中使用关键字 `related_name`
- discord - 我想在 discord.py 的 on_reaction_add 函数中获取用户反应的消息
- reactjs - 如何正确从套接字添加数据以反应状态数组
- operating-system - 对此真的很陌生。内核代码以某种方式弄乱了用户空间代码
- gitlab - 如何在 gitlab 作业输出中回显日期和时间?