这是有点复杂,但在这里。Socket.IO/Node.JS/Rails 3/IE
我有一个Rails应用程序,它有一个小的JS小部件,它在一些后端处理内容上得到更新。 Rails应用程序在Redis中排队工作(通过Kthxbye),该工作得到处理,然后一旦完成,就会触发redis发布消息。此通道正在由负责处理通知和更新Web前端的Node.JS服务器监视。这一切都适用于WebSockets工作的Google Chrome世界。
然而,Firefox和IE都必须默认使用其他解决方案,因为它们不支持WebSockets(还)。
目前看来,这两个默认xhr轮询运输。来自Node.js日志。这一切都很好。但是,在IE上,传输/轮询方法似乎存在错误。从Node.js的日志:
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"
所以这几乎就像它的连接,一旦它试图轮询,它就会出现断线因“非法运输”的问题。任何人都知道这是从哪里来的?
其他一些线索,闪光灯连接器似乎正确加载,但我认为它没有运行或无法加载,因为它仍然回落到xhr轮询。从IE浏览器,我可以看到以下3个请求是由每一个轮询周期:
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
虽然我一直无法获得FlashSocket API接管。它总是被忽略而没有解释。它甚至似乎加载的Flash文件,但然后它失败回到xhr与jsonp投票...你能解释“如果你使用其他端口,然后xhr轮询将无法正常工作...”PLZ? – Lukas 2010-09-30 14:09:06
看起来像是一个失败的运行flashsockets的权限问题。最新版本通知这一点。在边缘上跑步的风险我猜:) – Lukas 2010-10-12 14:59:40