这是在socket_io python服务器的base_manager.py中 - >这段代码有什么意义?我想发一条消息。如果没有房间,那怎么可能工作呢?如果名称空间不在self.rooms中 - >没有空间所以它总是会回到呼叫者身边吗?:
def emit(self, event, data, namespace, room=None, skip_sid=None,
callback=None):
"""Emit a message to a single client, a room, or all the clients
connected to the namespace."""
if namespace not in self.rooms or room not in self.rooms[namespace]:
return
for sid in self.get_participants(namespace, room):
if sid != skip_sid:
if callback is not None:
id = self._generate_ack_id(sid, namespace, callback)
else:
id = None
self.server._emit_internal(sid, event, data, namespace, id)
答案 0 :(得分:0)
请注意,您正在查看内部方法,而不是应用程序可以访问的内容。
您缺少的信息是(我认为)所有用户都有自己的房间。向单个用户发送消息的方式是将其发送到该用户的房间,该房间以分配给该客户会话的sid
命名。
因此,假设您有一个被分配了sid="12345"
的用户。在您的应用程序中,您可以通过致电emit('some-event', data, room='12345')
向该用户发送消息。