Wie man Apache und Node.js mit Socket.io Setup arbeiten lassen?

9

Beginnen Sie einfach mit Node.js / Socket.io. Letztendlich möchte ich die Seiten von Apache bedienen, während ich einen Teil des Inhalts mit dem Node.js-Server verschiebe und erweitere. Dies ist nur ein kleiner Test, um zu sehen, wie alles funktioniert. Hier ist mein Setup:

  • Apache wird auf Port 8080 ausgeführt
  • Node.js am Port 8000

Ich kopiert die Seite index.html (siehe unten) in ihre jeweiligen Stammverzeichnisse.

  1. Wenn ich http://localhost:8000 öffne, funktioniert alles wie erwartet und ich kann den kompletten Nachrichtenaustausch sehen.

  2. Wenn ich http://localhost:8080 öffne, scheint alles zu funktionieren (basierend auf Anforderungs- und Response-Headern, und Node.js-Protokoll verglichen mit 1.), aber ich kann auch keinen Nachrichtenaustausch sehen Node.js oder Firebug-Protokoll.

  3. Wenn ich die von Node.js bediente Seite zum ersten Mal öffne, schließe sie und öffne dann die Seite, die von Apache bedient wird. Ich kann "CONNECTED", "DISCONNECTED" und dann "CONNECTED" -Nachrichten im Node.js-Terminal sehen.

Die Frage ist: Wie kann case 2. funktionieren?

Seite:

%Vor%

Server:

%Vor%

Ich kenne die folgenden Fragen zu SO:

aber ich kann es immer noch nicht schaffen ...

Ich habe es versucht:

  • "Ändern Sie den Pfad zu /socket.io-client/dist/socket.io.js"

Im Browser: ReferenceError: io ist nicht definiert . Wenn ich zu http://localhost:8000/socket.io-client/dist/socket.io.js gehe, bekomme ich Willkommen bei socket.io. Antwort.

Im Serverprotokoll: info - unbehandelt socket.io url

  • "diene der Datei socket.io.js von deinem statischen Apache-Server"

Wie würde das funktionieren? Apache kann nicht mit /socket.io/socket.io.js und node_modules automagic umgehen?

  • dark_ruby hat vorgeschlagen, einen Proxy einzurichten

Ich habe die Skriptquelle auf der Seite index.html im Apache-Stammverzeichnis in

geändert %Vor%

In der Apache-Konfiguration habe ich hinzugefügt:

%Vor%

Bei einer solchen Konfiguration hatte http://localhost:8080 das gleiche Ergebnis wie in 2. oben:

%Vor%

d. keine Nachrichten.

    
Johnny Baloney 28.01.2014, 16:11
quelle

1 Antwort

4

Ihr io.sockets befindet sich in der Handler-Funktion.  Ich gehe davon aus, dass es aufgerufen wird, wenn Sie eine Anfrage an den Knoten JS Server stellen. Bis dahin führt der Knoten-JS-Server niemals Ihren IO-Code aus.

Versuchen Sie, es aus dem Handler zu entfernen und fügen Sie es in Ihre app.js ein.

Und keine Notwendigkeit, den Pfad oder den Proxy zu ändern. Der Code, den Sie ursprünglich gepostet haben, ist in Ordnung. Das Problem liegt nicht beim Laden der Datei socket.io.js. Aber der Knotenserver erkennt IO-Ereignisse.

    
nightgaunt 03.02.2014, 07:17
quelle

Tags und Links