0

这是在 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)
4

1 回答 1

0

请注意,您正在查看内部方法,而不是应用程序可以访问的方法。

您缺少的一条信息是(我认为)所有用户都有自己的房间。向单个用户发送消息的方式是将消息发送到该用户的房间,该房间以sid分配给该客户端会话的 命名。

所以,假设你有一个被分配的用户sid="12345"。在您的应用程序中,您可以通过调用向该用户发送消息emit('some-event', data, room='12345')

于 2016-07-19T21:00:08.663 回答