Socket.IO / Node.JS / Rails 3 / IE - PullRequest
       8

Socket.IO / Node.JS / Rails 3 / IE

3 голосов
/ 29 сентября 2010

Это немного сложно, но здесь.

У меня есть приложение Rails, в котором есть небольшой JS-виджет, который обновляется в некоторых процессах обработки на сервере. Приложение Rails ставит в очередь задание в Redis (через Kthxbye ), которое обрабатывается, а затем, после завершения, запускает сообщение публикации Redis. Этот канал отслеживается сервером Node.JS, который отвечает за обработку уведомлений и обновление веб-интерфейса. Все это прекрасно работает в мире Google Chrome, где работают WebSockets.

Однако и 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

1 Ответ

1 голос
/ 30 сентября 2010

Похоже, у вас есть более старая версия сервера Socket.IO, которая еще не поддерживает jsonp-опрос. И более новая версия на стороне клиента ... В любом случае, по моему опыту, транспортный банкомат работает не очень хорошо, так что не беспокойтесь об этом. В IE должен работать flashsocket и xhr-polling, если только вы не используете сервер S.IO в другом домене, чем ваш сайт. Если вы используете другой порт, тогда xhr-опрос не будет работать в Opera, но должен работать в других браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...