Frage

Das ist ein bisschen kompliziert, aber hier geht.

Ich habe eine Rails-Anwendung, die ein kleines JS hat Widget, das auf einig Backend-Verarbeitung Material aktualisiert wird. Die Rails-Anwendung Warteschlangen einen Job in Redis (via KTHXBYE ), die dann abgeschlossen einmal verarbeitet wird, feuert eine redis veröffentlichen Nachricht. Dieser Kanal wird von einem Server Node.JS beobachtet, die für die Handhabung der Benachrichtigungen und Aktualisieren des Web-Frontend verantwortlich ist. Das alles funktioniert gut in einer Google Chrome Welt, in der WebSockets arbeiten.

Doch sowohl Firefox und IE müssen andere Lösungen auf Standard, weil sie nicht WebSockets unterstützen (noch) nicht.

Zur Zeit scheint es, dass sowohl Standard xhr-Polling-Transport. Aus den Node.js Protokolle. Das ist alles schön und gut. Doch auf IE, scheint es, dass es ein Fehler in dem Transport / Polling-Verfahren. Von dem Node.js protokolliert:

29 Sep 15:30:02 - Initializing client with transport "xhr-polling"
29 Sep 15:30:02 - Client 9219092682469636 connected
29 Sep 15:30:05 - Client 8440734834875911 disconnected
29 Sep 15:30:05 - Client 6149627515114844 disconnected
29 Sep 15:30:07 - Illegal transport "jsonp-polling"
29 Sep 15:30:07 - Illegal transport "jsonp-polling"

So scheint es fast, als ob seine Verbindungs ??und sobald es zu Umfrage versucht, wird es getrennt aufgrund eines „illegalen Transports“ -Ausgabe. Wer weiß, woher das kommt?

Einige andere Hinweise, scheint der Blitzanschluss richtig zu laden, aber ich nehme es nicht läuft oder nicht irgendwie zu laden, wie es immer noch zurück zu xhr-Polling fällt. Von IE, kann ich die folgenden drei Anfragen sehen werden jeden Abfragezyklus gemacht:

GET /socket.io/xhr-polling//1285789236601 HTTP/1.1
Accept: */*
Origin: http://plukevdh-desktop:3000
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: itwebpriv1:8081
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 25
Access-Control-Allow-Origin: undefined
Connection: keep-alive

---

GET /socket.io/xhr-polling//1285789236616 HTTP/1.1
Accept: */*
Origin: http://plukevdh-desktop:3000
Accept-Language: en-us
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Host: itwebpriv1:8081
Connection: Keep-Alive
Cache-Control: no-cache

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 24
Access-Control-Allow-Origin: undefined
Connection: keep-alive

---

GET /socket.io/jsonp-polling//1285789241616/0 HTTP/1.1
Accept: */*
Referer: http://plukevdh-desktop:3000/jobs/905390
Accept-Language: en-us
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
Accept-Encoding: gzip, deflate
Host: itwebpriv1:8081
Connection: Keep-Alive
War es hilfreich?

Lösung

Sounds für mich wie Sie eine ältere Version von Socket.IO Server haben, die noch nicht über JSONP-Polling-Unterstützung. Und eine neuere Version client ... Wie auch immer in meiner Erfahrung, dass der Transport atm nicht sehr gut sowieso funktioniert so nicht die Mühe mit ihm. In IE soll flashsocket arbeiten und xhr-Polling sollte auch funktionieren, es sei denn, OFC Sie den S.IO Server in einer anderen Domäne als Ihre Website ausgeführt werden. Wenn Sie andere Port verwenden dann xhr-Polling wird in Opera nicht Arbeit, sondern sollte auch in anderen Browsern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top