Javascript Node.js并将数据发送回所有浏览器选项卡

Javascript Node.js并将数据发送回所有浏览器选项卡,javascript,node.js,Javascript,Node.js,我正在使用Node.js,它只在一个窗口或选项卡上运行良好。但是我想在用户浏览器的所有打开的选项卡中从Node.js获取返回的数据 像facebook像,它会在你所有打开的标签页中通知你 这是我的常规发射代码: users[user_id].socket.emit( 'xx', { data } ); 但是数据仅在第一个打开的选项卡中可用。如何在所有打开的选项卡中获取它?假设您使用的是Socket.io,users是一个对象,您可以在新连接上添加一个user\u id,那么可能发生的情况是,每

我正在使用Node.js,它只在一个窗口或选项卡上运行良好。但是我想在用户浏览器的所有打开的选项卡中从Node.js获取返回的数据


像facebook
,它会在你所有打开的标签页中通知你

这是我的常规发射代码:

users[user_id].socket.emit( 'xx', { data } );

但是
数据
仅在第一个打开的选项卡中可用。如何在所有打开的选项卡中获取它?

假设您使用的是Socket.io,
users
是一个对象,您可以在新连接上添加一个
user\u id
,那么可能发生的情况是,每个具有相同
user\u id
的新套接字连接都会覆盖以前缓存的套接字。这是因为对象键必须是唯一的,否则设置对象的同一键实际上就是更新或覆盖该值


你可能会对它感兴趣。或者,一种可能的解决方案是将用户的对象值转换为一个数组,在新连接时推送到该数组,在断开连接时从该数组拼接。当您想要发送消息时,您需要迭代用户的数组,并相应地向数组中的每个套接字发出消息。

我不太明白您的意思。你能澄清一下吗?你需要一个套接字数组。比如facebook
like
,它会在你所有打开的选项卡中通知你。那么呢?如果每个用户都可以有多个套接字,那么您仍然需要一个数组。“Comet”不是一个特定的产品,它是一个通用术语,指的是从服务器->客户端推送数据的各种技术解决方案。例如,您可以进行传统轮询、长轮询、流式HTTP、WebSocket。。。选择你的毒药。在Node.js中,SocketIO非常流行。但是,不管您使用什么,您的服务器都需要维护一个列表,其中列出了所有与您的服务器有活动的、打开的连接的客户端。然后,当您有数据要发送时,您需要将该数据广播到所有连接的客户端。在使用阵列或房间时,同时连接的数量增加到10000个用户,每个用户都有一个阵列。这不会对性能产生影响?当然,但这种规模将影响性能,无论实现如何。不过,我不知道哪种方法可能最有效。