Ich versuche, Client zu Client-Messaging in meiner App mit socket.io
und node.js
und Android
zu implementieren.Socket.io Client-zu-Client-Logik, mit vielen Benutzern
Ich suchte ein wenig, und fand eine Menge Tutorials, erklären, wie man mit dem Targeting bestimmter Client beim Senden von Nachrichten über socket.io
Socket.
Send message to specific client with socket.io and node.js
Die Lösung ist fast immer das gleiche: ein hashmap Objekt erstellen, die Verknüpfung Benutzer Informationen wie sein username
, email address
(oder etwas einzigartig erlaubt, es zu identifizieren), mit seinem socketid
. Dann io.clients[sessionID].send()
Aufruf
Jetzt habe ich zwei Fragen:
Dies würde funktionieren, wenn nur eine Instanz der
app
läuft, aber vorstellen, wenn meine app in mehreren Instanzen aufgeteilt ist (für große app). Was passiert, wenn ein ClientA
, der mit der InstanzX
verbunden ist, eine Nachricht an den BenutzerB
senden möchte, die mit der InstanzZ
verbunden ist. Wenn, wie im Beispiel gezeigt,socketids
direkt in einem einfachen Objekt im Skript gespeichert sind, wissen einige Sockets nicht über andere Benutzer, die in einer anderen Instanz existieren.Wenn ich total falsch bin (und ich könnte), ist dies eine gute Praxis, alle Benutzer
socketids
in einer einzigen Variablen zu speichern? Wenn ja, wäre es mit einer Umgebung von mehr als 500 Benutzern noch in Ordnung? Wenn nein, sollte ich eine andere Lösung finden, wie zum Beispiel das Speichern des Benutzerssocketids
in der Datenbank?
Schön, und würden Sie mir vorschlagen, das Objekt zu halten, um Sockets zu speichern? – FrenchFalcon
In der Redis-Datenbank. Ich habe meine Antwort etwas modifiziert, um das klar zu reflektieren. – overburn
Beziehen Sie sich darauf? http://socket.io/docs/using-multiple-nodes/ – FrenchFalcon