Подтвердить что ты не робот

Возможно ли использование 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.

4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

Да.

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