Socket.IO: Empfängerkreis einer Nachricht einschränken

8 Mai

Socket.IO eigenet sich wunderbar zur Kommunikation zwischen Client und Server. Der Client schickt dem Server eine Nachricht, der Server schickt dem Client eine Nachricht zurück. Am Besten kann man sich einen Chat vorstellen. Ich schreibe eine Nachricht und andere Benutzer sehen diese sofort.

Bei meiner Arbeit an SciFlowWriter habe ich mehrere Widgets implementiert, die ebenfalls über Socket.IO mit dem Server kommunizieren. Eins meiner Ziele war es, dass ein Benutzer z.B. eine Literaturliste pflegen und andere Benutzer die Änderungen sofort sehen können. Ansich funktioniert das wunderbar, nur leider bekamen alle anderen Benutzer, die mit diesem Pad nichts zu tun haben, ebenfalls diese Änderungen mit.

Jede Nachricht an den Server enthält eine Pad-ID. Anhand dieser ID werden die Daten in den Pads gespeichert. Nachrichten vom Server enthalten ebenfalls diese ID. Jetzt müsste ich in den Widgets einfach nur prüfen, ob die empfangene Nachricht für das Widget in einem bestimmten Pad bestimmt ist und ggf. die Nachricht verwerfen.

Die Bessere Lösung für das Problem sind jedoch „Räume“, die in Socket.IO benutzt werden können. Jedem Pad wird also ein eigener Raum zugewiesen. Jetzt können nur die Benutzer, die sich in diesem Raum befinden, Nachrichten erhalten, die nur an diesen Raum geschickt werden.

2 Antworten to “Socket.IO: Empfängerkreis einer Nachricht einschränken”

  1. steve88 24. Mai 2012 um 19:19 #

    Fehler „zur kommunikation“ :)

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: