2016-04-04 7 views
0

Ich habe mir alle Antworten angeschaut, wie ich an einen bestimmten Kunden geschickt wurde, und ich habe keinen gefunden, der funktioniert.Socket.io 1.4.5 Wie senden Sie eine Nachricht an einen einzelnen Client in einem Raum?

Ich habe einen Namensraum mit einem Raum, der 2 Clients enthält. Ich habe einen Prozess, der Informationen für 1 der Clients in diesem Raum senden möchte. Ich habe die SocketID. Also wenn ich es versuche:

namespace.to(socketID).emit('messageID',data); 

Ich sehe buchstäblich nichts. Ich habe einen Hörer auf der Clientseite eingerichtet:

namespace.on('messageID', function(data) { 
    console.log('messageID seen'); 
    console.log(data); 
}); 

Es wird nie ausgelöst. Ich habe auch versucht:

namespace.to(socketID).emit('messageID',data); 

und

namespace.sockets.sockets[socketID].emit('messageID',data); 

und

namespace.clients[socketId].emit('messageID',data); 

Keiner von ihnen arbeiten.

Also, was ist der richtige Weg, um eine Nachricht an einen bestimmten Client in einem Raum in einem Namespace in socket.io Version 1.4.5 zu senden?

Jede Hilfe wäre willkommen!

Z

Antwort

0

Meine Lösung auf meine Frage ein anderes Zimmer zu schaffen war und hat es nur in diesem Raum einen eigenen Client. Das funktioniert perfekt.

+0

Sie können auch einen Verweis auf den Socket dieses Clients speichern, wenn der Client eine Verbindung herstellt, und ihn später wie erforderlich über 'socket.emit()' verwenden. Sie müssen auf diese Weise keinen weiteren Raum für diesen Kunden erstellen. – Josh1billion

+0

Wie würde ich das machen? – Zanderfax

+0

Schwer in einen Kommentar einzutippen, aber in 'io.on ('Verbindung', Funktion (Socket) {/ * hier * /}', speichern Sie einen Verweis auf das 'Socket'-Objekt, wie Sie möchten (vielleicht mit einem globalen Array von allen verbundenen Clients). Von diesem Punkt an können Sie einfach die Funktion emit() 'des Objekts aufrufen, wo immer Sie möchten, über den von Ihnen gespeicherten Verweis. – Josh1billion

Verwandte Themen