2016-07-18 33 views
0

這是在socket_io python服務器中的base_manager.py - >這段代碼有什麼意義?我想發出一條消息。如果沒有房間,那該怎麼辦?如果命名空間不self.rooms - >沒有空間,所以它總是會返回到呼叫方的權利?:套接字io代碼混淆

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

注意,你正在尋找一個內部方法,沒有東西是對應用程序訪問。

您缺少的信息是(我認爲)所有用戶都有自己的房間。您向單個用戶發送消息的方式是將其發送到該用戶的房間,該房間以分配給該客戶端會話的sid命名。

因此,假設您有一位被分配了sid="12345"的用戶。在您的應用程序中,您可以通過致電emit('some-event', data, room='12345')向該用戶發送消息。