Wie kann ich socket.io in andere Module in nodejs exportieren?

7

Ich habe socket.io arbeitet in app.js , aber wenn ich versuche, es von anderen Modulen aufzurufen, erzeugt es io.connection nicht sicher?

app.js

%Vor%

consumer.js

%Vor%     
hussain 21.07.2016, 18:38
quelle

3 Antworten

16

Da app.js in der Regel das Hauptinitialisierungsmodul in Ihrer App ist, initialisiert es normalerweise sowohl den Webserver als auch socket.io und lädt andere Dinge, die von der App benötigt werden.

Eine typische Methode, io mit anderen Modulen zu teilen, besteht darin, sie an die anderen Module in der Konstruktorfunktion dieses Moduls zu übergeben. Das würde so funktionieren:

%Vor%

Dann in consumer.js:

%Vor%

Oder, wenn Sie eine .start() -Methode verwenden möchten, um Dinge zu initialisieren, können Sie das gleiche tun (kleine Unterschiede):

%Vor%

Und die Startmethode in consumer.js

%Vor%

Dies ist das sogenannte Push-Modul der gemeinsamen Nutzung von Ressourcen. Das Modul, das Sie lädt, schiebt Ihnen einige geteilte Informationen, indem Sie es im Konstruktor übergeben.

Es gibt auch "Pull" -Modelle, bei denen das Modul selbst eine Methode in einem anderen Modul aufruft, um die geteilten Informationen (in diesem Fall das io -Objekt) abzurufen.

Oft kann eines der beiden Modelle funktionieren, aber in der Regel fühlt sich das eine oder das andere natürlicher an, je nachdem, wie die Module geladen werden und wer die gewünschten Informationen hat und wie Module unter anderen Umständen wiederverwendet werden sollen. p>     

jfriend00 21.07.2016, 20:49
quelle
10

Wenn Sie den globalen Gültigkeitsbereich vermeiden möchten, machen Sie Ihre io in einer separaten Datei wie dieser:

%Vor%

Dann in app.js:

%Vor%

und in consumer.js:

%Vor%     
Patrick Roberts 21.07.2016 19:20
quelle
0

Sie können eine Singleton-Instanz in nur 4 Zeilen erstellen.

Schreiben Sie in websocket.js Ihren Serverkonfigurationscode.

%Vor%

Dann benötigen Sie in Ihrer consumer.js nur die Datei

%Vor%     
Dušan Minić 04.03.2018 12:05
quelle

Tags und Links