Длинный опрос и IE XDomainRequest объект - PullRequest
4 голосов
/ 12 августа 2011

Я пытаюсь реализовать приложение чата, которое использует длинный опрос для получения сообщений с удаленного (междоменного) сервера.

Есть ли способ сделать это с помощью XDomainRequest? Кажется, что мои соединения всегда разрываются через случайное количество секунд / миллисекунд (обычно около 1-3 секунд) вместо ожидания ответа сервера.

Разработчик IE слишком ударил меня, что запрос был "прерван" без получения данных.

XDomainRequest просто не подходит для длинных опросов или я что-то здесь упускаю?

Ответы [ 2 ]

4 голосов
/ 29 марта 2012

Была ли эта проблема, как условие гонки, с использованием библиотеки jQuery iecors.Сетевая консоль IE показала запрос как «отмененный», несмотря на то, что Fiddler показал ответ 200.

После нескольких упорных поисков я наткнулся на эту ссылку, которая рекомендует заполнять все обработчики обратного вызова.Я подозреваю, что onProgress вызывался и завершался неудачно только тогда, когда запрос был замедлен из-за большой страницы, что приводило к моему поведению в гонке.

Запросы IE9 XDomainRequest могут быть прерваны, если все обработчики событий не указаны

В jquery.iecors.js отсутствовал обработчик onprogress, в дополнение к нескольким опечаткам имен переменных.Добавление этой строки, кажется, исправляет это.

xdr.onprogress = function () {};
2 голосов
/ 05 декабря 2012

Для меня проблема касалась нескольких функций запросов, выполняемых как одна пакетная функция с использованием XDomainRequests. WebTools показал, что все запросы к удаленному серверу будут прерваны, кроме последнего. Запуск с предупреждением (запросом) перед каждым запросом. Поэтому я переместил свой вызов XDR (например, new window.XDomainRequest) в цикл, чтобы новый экземпляр создавался для каждого запроса на удаленном сервере. Каждый результат вставляется в другое поле ввода через getElementById (id) .value. С добавленным таймером задержки я вижу, что он запускается последовательно, заполняя каждое значение без проблем. Без задержки это практически мгновенно.

...