2016-03-21 27 views
1

Socket.io zeigt keine Nachrichten an, die an sich selbst gesendet werden ip. Zum BeispielSocket.io, Nachricht an sich selbst

var id = 333; 
socket.broadcast.to(id).emit('user', user); 

Es funktioniert gut, aber Meldung ist nur in Client # 333, aber Benutzer als gesendete Nachricht, nicht über eine Kopie in dem Messaging-Client.

wollte ich auf diese Weise lösen, aber es nicht

socket.broadcast.to(socket.id).emit('user', user); 

Warum funktioniert?

+0

Ich folge nicht ganz, was Sie hier erreichen wollen. 'socket.id' ist die Socket-ID (no waaayyy) des aktuellen Benutzers. Können Sie das Thema näher erläutern? –

+0

@SterlingArcher Alle meine Benutzer werden von socket.id identifiziert, aber die Nachricht ist nur für den Empfänger, nicht für den Absender. – Emerceen

+0

Ich verstehe es nicht ... Was würden Sie gerne passieren? Bitte fügen Sie einige Beispiele für die Eingabe und Ausgabe von dem, was Sie gerne machen möchten. –

Antwort

0

Ohne mehr Code ist es schwer zu sagen, was Sie wollen, aber eins ist sicher, um eine Nachricht an einen einzelnen Benutzer zu senden, müssen Sie verwenden, dass socket Objekt und verwenden socket.emit

Soweit ich broadcast wissen, ist nur benutzt, um jedem außer dir selbst zu erzählen.

Was ich in der Regel tun, wenn es darum geht, den Überblick über Nutzer zu halten, ist ich habe folgende:

var userList = []; 
io.on('connection', function (socket) { 

    socket.on('userData', function (userDetails) { 
     userDetails.socket = socket; 
     userList[userDetails.id] = userDetails 
    }); 
}); 

Basicly, wenn ein Benutzer auf meine Steckdose verbindet, und die Seite für den Benutzer vollständig ist geladen sendet seine ID (oder ein Token, wenn Sie möchten), dann ordne ich die socket des Benutzers in die Liste ein, also kann ich sie schnell wieder aufheben, wenn ich an diesen Benutzer senden möchte.


könnte ein Beispiel sein:

user.id = 33 auf unserem Server

Nach dem Laden der Benutzer sendet auf unseren Server userData Funktion

Der Sockel genommen und die Liste wird dann eine Verbindung setzen in an Zeile 33

Wenn wir brauchen, können wir den folgenden Code verwenden, um die Benutzer zu erhalten socket:

socket = userList[33]; 

oder wenn wir das Objekt:

socket = userList[user.id]; 

Ich hoffe, das Ihnen hilft.

Verwandte Themen