socket.io如何区分消息是发给哪个房间的
socket.io How to distinguish for which room is the message
我从服务器发消息给两个房间
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);
});
当消息到达客户端时,没有内部指示消息被发送到哪个房间。这是因为消息并没有真正发送到房间,而是发送到房间中的连接。
因此,当您收到消息时,您可以通过三种方式修改您的代码:
您可以使用不同的邮件名称。您将不得不 .emit()
服务器上的不同消息名称,并且您必须在客户端中监听每个不同的消息名称。
您可以在消息中添加一段数据(作为消息数据发送的对象上的 属性)以指示它与哪个房间相关联。
您可以为每个房间使用不同的连接,因此给定的连接仅在一个房间中,因此您会知道发送到它的任何消息都与该房间相关联。
根据消息的相似或不同程度,我可能会 select 选项 1 或选项 2。如果消息确实相同,只是与不同的房间相关联,我会选择选项 2 . 如果消息在不同的房间里实际上有不同的含义,那么我会选择选项 1。
我从服务器发消息给两个房间
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);
});
当消息到达客户端时,没有内部指示消息被发送到哪个房间。这是因为消息并没有真正发送到房间,而是发送到房间中的连接。
因此,当您收到消息时,您可以通过三种方式修改您的代码:
您可以使用不同的邮件名称。您将不得不
.emit()
服务器上的不同消息名称,并且您必须在客户端中监听每个不同的消息名称。您可以在消息中添加一段数据(作为消息数据发送的对象上的 属性)以指示它与哪个房间相关联。
您可以为每个房间使用不同的连接,因此给定的连接仅在一个房间中,因此您会知道发送到它的任何消息都与该房间相关联。
根据消息的相似或不同程度,我可能会 select 选项 1 或选项 2。如果消息确实相同,只是与不同的房间相关联,我会选择选项 2 . 如果消息在不同的房间里实际上有不同的含义,那么我会选择选项 1。