2016-05-03 10 views
1

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 Client A, der mit der Instanz X verbunden ist, eine Nachricht an den Benutzer B senden möchte, die mit der Instanz Z 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 Benutzers socketids in der Datenbank?

Antwort

1

Sie können eine Redis-Instanz verwenden, die von allen Ihren App-Instanzen gemeinsam genutzt wird. Und du bekommst 2 Fliegen mit einer Klappe.

Die Redis würde alle Ihre Socket-IDs an einem zentralen Ort speichern.

+0

Schön, und würden Sie mir vorschlagen, das Objekt zu halten, um Sockets zu speichern? – FrenchFalcon

+0

In der Redis-Datenbank. Ich habe meine Antwort etwas modifiziert, um das klar zu reflektieren. – overburn

+0

Beziehen Sie sich darauf? http://socket.io/docs/using-multiple-nodes/ – FrenchFalcon