2017-12-26 19 views
-1

Wenn wir uns mit socket.io verbinden, müssen wir die Server-IP definieren oder lassen sie leer, wenn die Dateien auf demselben Server gehostet werden.Socket.io Was ist, wenn es zwei Anwendungen auf der gleichen Server-IP gibt?

Jeder emittieren wir feuern, wird auf jede Buchse Verbindung geworfen werden.

Wenn wir zwei Anwendungen auf demselben Server haben, wird alle von app1 emittiert wird in app2 und umgekehrt emittiert werden.

Wie vermeide ich das?

+0

Da es scheint, dass Sie hier vielleicht neu sein werden, sollten Fragen zu Code in Zukunft den entsprechenden Code in Ihrer Frage enthalten, damit wir genauer auf Ihre spezifische Situation eingehen können. Aus unbekannten Gründen tendieren Leute, die hier neu sind, zu denken, dass es besser ist, eine "generische" Frage entweder mit keinem Code oder mit erfundenem Pseudocode zu stellen. Das ist so ziemlich nie die beste Option. Sie sollten die relevanten Teile Ihres tatsächlichen Codes einschließen, damit wir Ihre genaue Situation sehen können, und so können wir den genauen zu reparierenden Code empfehlen. – jfriend00

Antwort

0

Es hängt davon ab, was Sie mit "zwei Anwendungen" meinen. Wenn Sie meinen, es handelt sich um zwei Verbindungen zu demselben socket.io-Server, dann ist yes io.emit() absichtlich so konzipiert, dass es an alle Verbindungen zum aktuellen Server gesendet wird.

Wenn Sie zwei separate socket.io Server auf demselben Host haben, müssen diese socket.io Server auf separaten Ports sein (Sie können nicht zwei tatsächliche Server auf dem gleichen Port haben) und wenn Sie io.emit() zu einem es wird nichts mit dem anderen zu tun haben, weil die Objekte io für die beiden Server völlig unterschiedliche Objekte sind, die an völlig unterschiedliche Server angeschlossen sind.

Also, es hängt wirklich davon ab, wie Sie Dinge auf dem Host konfiguriert haben. Wenn Sie Ihren tatsächlichen serverseitigen Code für Ihre zwei Server zeigen, könnten wir viel spezifischer antworten. Wenn Sie nur einen socket.io-Server haben und nach Möglichkeiten suchen, eine Nachricht an eine Gruppe verbundener Sockets zu senden, können Sie entweder namespaces or rooms verwenden. Ein Namespace ist eine Verbindung zu einem Client. Ein Raum ist etwas, in dem ein Server eine Verbindung mit .join() herstellt. Sie können dann .emit() entweder zu einem Namespace oder einem Raum und es wird an alle Sockets in dieser Sammlung senden.

+0

Ich habe einen Server. Zwei verschiedene Apps, wie für zwei verschiedene Projekte. Ich möchte über ein Update in app1 senden. Aber ich will nur nicht, dass es in app2 ausgestrahlt wird. Wie Ordner, gibt es eine Option zum Senden der emit in den Ordner mit dem Namen: "app1" auf dem Server? – Raz

+0

@Raz - Ich verstehe immer noch nicht. Was ist eine "App" in Ihrem Kontext? Ein Server, zwei verschiedene Apps erklären es mir nicht. socket.io verfügt über Namespaces und Räume, in denen Sie an bestimmte socket.io-Verbindungsgruppen senden und nur an eine bestimmte Gruppe senden können. Ich kann nicht sagen, ob du das suchst. – jfriend00

+0

Genau danach suche ich. Wenn ich verschiedene Apps sage, meine ich zwei verschiedene Websites mit zwei verschiedenen Domains. Nur noch zwei Apps. Könnten Sie bitte mehr über Namespaces und Räume von socketio erklären? – Raz

Verwandte Themen