我使用的是Node.js,它只适用于一个窗口或标签。但是我希望在用户浏览器的所有打开的选项卡中从Node.js返回数据。
像facebook Like
一样,会在所有打开的标签页中通知。
这是我的常规发射代码:
users[user_id].socket.emit( 'xx', { data } );
但data
仅在首次打开的标签页中可用。如何在所有打开的标签中获取它?
答案 0 :(得分:1)
假设您正在使用Socket.io并且users
是在新连接上添加user_id
的对象,可能发生的是每个新的套接字连接具有相同的user_id
{{1}} 1}}覆盖以前缓存的套接字。这是因为对象键需要是唯一的,否则设置对象的相同键实际上会成为对该值的更新或覆盖。
您可能对rooms感兴趣。或者,一种可能的解决方案是将用户的对象值转换为一个阵列,您可以将其推送到新连接并从断开连接上进行拼接。当你想发送一条消息时,你会迭代用户的数组并相应地发射到数组中的每个套接字。