Возможно ли использование Http Streaming Comet в Safari?
По потоковому комету HTTP я имею в виду варианты "forever iframe" / "forever xhr", которые не закрывают соединение после того, как данные были вытолкнуты с сервера, в отличие от стандартного опроса и длительного опроса, которые закрывают и повторно отправляют новый запрос для каждого события push на сервере.
Я посмотрел пакет dojo.io.cometd, и, похоже, у них есть только варианты опроса. Я также нашел этот пример, но он, похоже, не работает в webkit даже после справедливого кусочка (я получил его для работы везде). Это объявление из блога сафари, кажется, предполагает, что это возможно с помощью xhr, но я не мог найти никакого кода или документации, и я не мог его получить работать.
Кто-нибудь знает технику, script, библиотеку или демоверсию, которая выполняет потоковое комет HTTP в браузерах Webkit (Safari и Chrome)?
Обновление
После немного более возиться, я обнаружил, что есть две вещи, которые нужно сделать, чтобы получить HTTP-поток, работающий в Safari через XHR:
- Ответ должен иметь тип Content-Type: multipart/x-mixed-replace
- Ответ должен отправить несколько символов "шума", прежде чем браузер начнет последовательно отображать обновления. Я предполагаю, что это имеет какое-то отношение к заполнению некоторого внутреннего буфера.
Обновление 2
Наконец, я получил его для работы во всех браузерах, используя технику iframe. Предостережение к решению состоит в том, что только браузеры на основе WebKit должны получать заголовок multipart/x-mixed-replace.
Ответы
Ответ 1
Согласно Википедии, комета HTTP Streaming должна быть доступна в каждом браузере. "Макет страницы с рамками, которые не являются", Ajax: окончательное руководство. O'Reilly Media, стр. 320. ISBN 0596528388, является ссылкой, которая цитируется для этой информации, поэтому, возможно, в этой книге есть предложение о том, как это сделать.
Также http://meteorserver.org/ имеет демонстрационную версию, которую я только что подтвердил, работает в Chrome, на клиентской стороне библиотеки + сервер, который подталкивает данные к клиент.
Ответ 2
Это определенно возможно: GMail делает это. Если вы просмотрите раздел "Ресурсы" инструментов разработчика в последнем Webkit, вы можете посмотреть его в действии. У них есть запрос под названием "bind", который остается открытым более или менее неопределенно. Я понимаю, что когда приходит новая почта, она сталкивается с этим соединением.
Ответ 3
Да.
Вам нужно включить большое количество (не менее 256 байт) нежелательной информации в начале ответа, чтобы получить Safari для ведут себя.
Ответ 4
Хотя это старый пост, я сделал поиск и нашел следующие статьи, которые действительно полезны
http://www.shanison.com/2010/05/10/stop-the-browser-%E2%80%9Cthrobber-of-doom%E2%80%9D-while-loading-comet-forever-iframe/