AngularJS - 在选项卡/窗口之间共享一个 websocket
Posted
技术标签:
【中文标题】AngularJS - 在选项卡/窗口之间共享一个 websocket【英文标题】:AngularJS - share a websocket between tabs/windows 【发布时间】:2017-05-31 12:33:30 【问题描述】:我正在使用angular-websocket打开一个WebSocket,应用程序正在等待消息,然后显示一个网络通知。
我注意到,当打开超过 1 个选项卡时,会有很多连接,然后每个选项卡都会收到一条消息,并且通知会在应该显示一次时显示 1 X TABS_NUM
。
我认为要使其正常工作,我需要为整个应用打开 1 个 WebSocket。
有什么想法吗?这种情况我该怎么办?
【问题讨论】:
每个窗口都是客户端应用程序的一个单独实例。真的不清楚你在寻找什么行为 我有一个发送通知的 websocket。但是,如果客户有 2 个打开的标签,则为客户发送 2 个相同的通知是不对的……在这种情况下我该怎么办 你不能在一个标签中读取消息时发出一条消息,然后其他标签就知道了吗? @charlietfl 你能解释一下吗? 你在使用Notifications API吗?如果是这样,tag
通知也可以避免重复。如果不是...显示更多详细信息
【参考方案1】:
使用tag 解决了我的问题:
用户通常不希望收到大量通知 在很短的时间内——例如,如果一个信使怎么办? 应用程序通知用户每条传入的消息,他们是 被发送了很多?避免向用户发送过多的垃圾邮件 通知,可以修改待处理的通知 队列,用新的替换单个或多个待处理通知 一个。
为此,可以为任何新通知添加标签。如果一个 通知已经具有相同的标签并且尚未显示, 新通知将替换之前的通知。如果 已显示具有相同标签的通知,则 上一个通知已关闭并显示新通知。
new Notification(notificationMessage.title, tag: notificationMessage._id);
【讨论】:
以上是关于AngularJS - 在选项卡/窗口之间共享一个 websocket的主要内容,如果未能解决你的问题,请参考以下文章