2016-07-18 16 views
0

Dies ist in base_manager.py in socket_io Python-Server -> Wie macht dieser Code Sinn? Ich möchte eine Nachricht senden. Wie könnte das jemals funktionieren, wenn es keine Räume gibt? Wenn Namensraum nicht in self.rooms -> kein Platz ist, so wird es immer Recht auf Anrufer wieder zurück ?:Socket io Code verwirrend

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) 

Antwort

0

Beachten Sie, dass bei einer internen Methode suchen, nicht etwas, das auf Anwendungen zugreifen können.

Die Information, die Sie verpassen, ist (denke ich), dass alle Benutzer ein eigenes Zimmer haben. Die Art und Weise, wie Sie eine Nachricht an einen einzelnen Benutzer senden, erfolgt durch Senden an den Raum dieses Benutzers, der mit dem sid benannt ist, der dieser Clientsitzung zugewiesen wurde.

Also, sagen Sie, Sie haben einen Benutzer, der sid="12345" zugewiesen wurde. In Ihrer Anwendung können Sie eine Nachricht an diesen Benutzer senden, indem Sie emit('some-event', data, room='12345') aufrufen.