【发布时间】:2011-02-09 10:27:00
【问题描述】:
是否可以使用 socket.io-node 向选定的用户组发送数据?例如,我如何实现与不同房间的聊天?我不希望 .broadcast() 向所有登录用户发送数据。
【问题讨论】:
标签: javascript node.js websocket socket.io
是否可以使用 socket.io-node 向选定的用户组发送数据?例如,我如何实现与不同房间的聊天?我不希望 .broadcast() 向所有登录用户发送数据。
【问题讨论】:
标签: javascript node.js websocket socket.io
通常,您应该为每个房间提供一个已连接用户的列表,并且这些用户都有一个您应该存储在某处的 client 对象。因此,当您想向特定房间发送消息时,您只需遍历该房间的连接用户并访问他们的client 对象并发送数据。
简而言之,您可能只需将数据一个接一个地发送给组中的每个用户。
【讨论】:
socket.io 内置了分组功能
在单个连接的套接字对象上,就像您在新用户连接时获得通过一样,您可以调用 .join('roomName') 其中 roomName 是您要用于标识“房间”的任何字符串,您可以使用“profile/14”之类的房间名称来创建更新用户 #14 个人资料的频道。
然后在主 io 对象上执行以下操作:
io.sockets.in('profile/14').emit('newComment', {message:'hello'});
消息将发送到所有已 .join() 指定房间的连接。
通常我会让我的客户端发出一个“hello”事件 onConnect,它标识客户端有兴趣订阅的内容,然后在服务器端我的“hello”事件处理程序处理 .join()'ing客户进入任何需要的房间
【讨论】: