Под HTTP Streaming Comet я подразумеваю варианты «навсегда iframe» / «навсегда xhr», которые не закрывают соединение после того, как данные были переданы с сервера, в отличие от стандартного опроса и длинного опроса, которые закрывают и отправляют новый запрос для каждого push-события сервера.
Я посмотрел на пакет dojo.io.cometd, и кажется, что они имеют только реализации опроса. Я также нашел этот пример , но, похоже, он не работает в webkit даже после немалых попыток (я заставил его работать везде). Это объявление из блога о сафари , похоже, предполагает, что это возможно с xhr, но я не смог найти ни кода, ни документации, ни заставить его работать.
Кто-нибудь знает методику, сценарий, библиотеку или демонстрацию, которая выполняет потоковую комету HTTP в браузерах Webkit (Safari и Chrome)?
Обновление
После нескольких попыток я обнаружил, что для того, чтобы потоковая передача http работала в Safari через XHR, необходимо выполнить две вещи:
- Ответ должен иметь тип содержимого: multipart / x-mixed-replace
- В ответ необходимо отправить несколько «шумовых» символов, прежде чем браузер начнет последовательно отображать обновления. Я предполагаю, что это как-то связано с заполнением некоторого внутреннего буфера.
Обновление 2
Я наконец-то заставил его работать во всех браузерах, используя технику iframe. Предостережение в том, что только браузеры на основе WebKit должны получать заголовок multipart / x-mixed-replace.