Возможна ли потоковая комета Http в Safari? - PullRequest
10 голосов
/ 04 октября 2008

Под 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.

Ответы [ 4 ]

4 голосов
/ 10 октября 2008

Согласно Википедии, комета HTTP Streaming должна быть возможна в любом браузере. «Макет страницы с кадрами, которых нет», Ajax: Полное руководство. O'Reilly Media, стр. 320. ISBN 0596528388, это ссылка, которая цитируется для этой информации, поэтому, возможно, в этой книге есть предложение, как это сделать.

Также http://meteorserver.org/ имеет демонстрацию, которую я только что подтвердил, работает в Chrome, библиотеки на стороне клиента + сервер, который передает данные клиенту.

3 голосов
/ 14 ноября 2008

Да.

Вам нужно включить большое количество (не менее 256 байт) мусора в начале ответа, чтобы Safari вел себя.

3 голосов
/ 10 октября 2008

Это определенно возможно: GMail делает это. Если вы посмотрите раздел Ресурсы инструментов разработчика в последней версии Webkit, вы можете посмотреть его в действии. У них есть запрос под названием «связать», который остается открытым более или менее бесконечно. Насколько я понимаю, когда приходит новая почта, она сталкивается с этим соединением.

0 голосов
/ 10 мая 2010

Несмотря на то, что это старый пост, я сделал поиск и нашел следующие статьи действительно полезными http://www.shanison.com/2010/05/10/stop-the-browser-%E2%80%9Cthrobber-of-doom%E2%80%9D-while-loading-comet-forever-iframe/

...