WebSocket nicht verbinden kann, um etwas anderes als 127.0.0.1 / localhost

Ich habe eine testapp, die aus einer HTML5/WebSocket-client und einem HTTP - /WS-server. Beide Server sind in C#; der HTTP-server meiner eigenen einfache Sache, und die WS-server ist auch homebrew basiert auf Konzepten von http://nugget.codeplex.com/. HTTP server listening on 0.0.0.0:5959-und WS-server auf 0.0.0.0:5960 (Annahme von verbindungen von beliebigen Clients aus, aber auf unterschiedliche ports).

Meine index.html enthält einige JavaScript-Code, öffnet sich ein WebSocket zu 'ws://'+document.location.hostname+':5960/' (d.h. die gleiche IP-Adresse, die Webseite, die kamen, aber auf port 5960). Der WS-server sendet Daten jeder 100ms. Alles in allem, ist es eine ziemlich einfache demo.
Ich bin mit Chrome 12.0 auf Windows7.

Habe ich herausgefunden, dass der HTTP-server funktioniert von jedem client aus einen browser auf meinem Rechner wies auf 127.0.0.1:5959 oder localhost:5959, UND es funktioniert, wenn jede Maschine (bei mir oder einer remote-Maschine... "remote" - Wesen von einem anderen PC auf meinem Schreibtisch 🙂 trifft meinen server-Maschine arbeiten-interne 10-net-Adresse 10.122.0.159:5959. Alles wie erwartet funktioniert in HTTP land.

Jedoch die WebSocket-funktioniert nur auf 127.0.0.1 und localhost; remote-Maschinen können erfolgreich Holen HTML von 10.122.0.159:5959 aber das WebSocket-KEINE Verbindung zu 10.122.0.159:5960. In der Tat, wenn ich meinen lokalen browser, um seine eigenen 10-net-Adresse (10.122.0.159:5959) bekomme ich das gleiche Ergebnis - HTML-lädt aber WebSocket-Verbindung nicht mit.

Irgendwelche Ideen, warum dies geschehen könnte?
Tut CORS verlangen, dass die WS werden mit dem gleichen port wie der HTTP-Anforderung stammt, aus? Wenn ja, gibt es eine spezielle Ausnahme von der Regel für 127.0.0.1?

Vielen Dank,

-Dave

Update

Es scheint verursacht zu werden durch einen proxy-server blockiert ws://- Anfragen. Unser Unternehmen beschäftigt einen proxy-server für die Inhaltsfilterung und all das übliche Zeug, und unsere Browser sind für die Verwendung konfiguriert ist.
Chrome nutzt den IE-proxy-Einstellungen des IE-Standardeinstellungen sind für localhost zu nicht verwenden Sie einen proxy-server. Wenn ich das Kontrollkästchen für lokale verbindungen auch über die proxy-server, meine ws://Anfragen auf localhost blockiert. Umgekehrt, wenn ich deaktivieren Sie das Kontrollkästchen "use proxy server" - box mein server hat rx der WS-Anfrage. Ähnlich ist es mit der remote-Maschine, wenn ich schalten Sie den proxy auf den entfernten Rechner meinen server hat rx das ws://- Anforderung.

Also ist es ein proxy-Sache, nicht eine CORS-oder socket-Ding, und jetzt bin ich off zu erkunden, proxy-Einstellungen, mit unsere IT-Leute.

  • "Fragen unsere IT-Leute, um änderungen" in was für einer Welt würde das funktionieren?
InformationsquelleAutor dlchambers | 2011-06-21
Schreibe einen Kommentar