Длинный опрос и IE XDomainRequest объект

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

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

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

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

2 ответа

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

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

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

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

xdr.onprogress = function () {};

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

Другие вопросы по тегам