Ich versuche, eine Verbindung zu einem socket.io Server hinter einem Apache Reverse-Proxy herzustellen. Ich habe auf Port Apache laufen 8888. Der NodeJS Server auf der gleichen Maschine auf Port läuft 9096. Für die Proxy-Prüfung wird wie folgt auf meinem lokalen Rechner konfiguriert:So verbinden Sie socket.io über einen Reverse-Proxy
ProxyPass /some/path http://localhost:9096
ProxyPassReverse /some/path http://localhost:9096
Im Client-Code, den ich so etwas tun :
var socketUrl = 'http://localhost:8888/some/path/namespace';
var socket = io.connect(socketUrl);
Dies führt zu folgendem Verhalten.
Zuerst mein Client fordert die socket.io.js Skript an:
http://localhost:8888/some/path/socket.io/socket.io.js
-> 200 ok
Dann wird die Buchse versucht an verbinden:
localhost:8888/socket.io/1?123983759
-> 404 not found
ich die "Ressource" Konfiguration für Sockel gefunden haben. io, aber dies scheint nur auf die Stelle zu verweisen, von der das socket.io.js-Skript abgerufen wird, aber nicht auf die URL, mit der es sich verbindet. Es scheint sich immer mit der Wurzel des Client-Ursprungs zu verbinden.
Wie könnte ich es localhost machen verbinden: 8888/some/path/socket.io/1 123983759
?
OK nun versucht, es zu verbinden, was scheint die richtige URL zu sein. Der Handshake ist abgeschlossen, aber der Status der Anfrage (socket.io/1?t=123983759) ist jetzt "abgebrochen". Wenn ich die gleiche URL im Browser verwende, gibt es einfach so etwas wie "xrf021YGWWEF5NUHoyTD: 60: 60: websocket" ohne Probleme zurück. Ich weiß nicht, was los ist. –
Mit "handshake is made" meine ich nodejs druckt "info - handshake authorised 05T-Uzt9CmK4SrN8sPQJ" –
Ich habe es zur Arbeit gebracht, kann mich aber nicht erinnern, warum ich in das abgesagte Problem gerannt bin. Ich denke, es hat mit meinen Einstellungen für den Reverse-Proxy und nicht mit den Einstellungen von socket.io zu tun. Für socket.io Version 1.0 wurde die Ressourcenoption durch 'Pfad' ersetzt. Fand das hilfreich zu sein http://blog.seafuj.com/migrating-to-socketio-1-0 –