我从服务器向两个房间发送消息。
io.to('room_one').emit('message', 'room_one');
io.to('room_two').emit('message', 'room_two');
当我使用此客户端代码时,我会收到两条消息。
socket.on('message', function (data) {
console.log(data);
});
但我想区分哪个房间是信息。 我想像这样的事情可以做到。
socket.on('room_one#message', function (data) {
console.log(data);
});
socket.on('room_two#message', function (data) {
console.log(data);
});
答案 0 :(得分:1)
当消息到达客户端时,没有内部指示消息被发送到哪个房间。这是因为邮件并未真正发送到房间,而是发送到房间内的连接。
因此,当您收到消息时,只有三种方法可以修改您的代码:
您可以使用其他消息名称。您必须在服务器上cor
使用不同的消息名称,并且必须在客户端中侦听每个不同的消息名称。
您可以向消息添加一段数据(作为带有消息的数据发送的对象上的属性)以指示与其关联的空间。
您可以为每个房间使用不同的连接,因此给定的连接只在一个房间内,因此您可以知道发送给它的任何消息都与该房间相关联。
根据消息的相似程度或不同,我可能会选择选项1或选项2.如果消息真的相同,只是与不同的房间相关联,我会选择选项2.如果消息实际上有在不同的房间有不同的含义,然后我选择选项1.