Возможна ли Http Streaming Comet в Safari?

Под HTTP Streaming Comet я подразумеваю варианты «навсегда iframe» / «навсегда xhr», которые не закрывают соединение после того, как данные были отправлены с сервера, в отличие от стандартного опроса и длительного опроса, которые закрывают и повторно отправляют новый запрос для каждое событие отправки сервера.

Я посмотрел на пакет dojo.io.cometd и, похоже, у них есть только реализации опроса. Я также нашел этот пример, но, похоже, он не работает в webkit даже после изрядной работы (я заставил его работать везде). Это объявление из сафари-блога, кажется, предполагает, что это возможно с xhr, но я не смог найти ни кода, ни документации, ни заставить его работать.

Кто-нибудь знает о методе, сценарии, библиотеке или демонстрации, которая выполняет комету потоковой передачи HTTP в браузерах Webkit (Safari и Chrome)?

Обновлять

Немного поработав, я обнаружил, что нужно сделать две вещи, чтобы заставить HTTP-потоки работать в Safari через XHR:

  • Ответ должен иметь Content-Type: multipart / x-mixed-replace
  • Ответ должен отправить несколько «шумных» символов, прежде чем браузер начнет последовательно отображать обновления. Я предполагаю, что это как-то связано с заполнением внутреннего буфера.

Обновление 2

Наконец-то я заставил его работать во всех браузерах, используя технику iframe. Предостережение к решению заключается в том, что только браузеры на основе WebKit должны получать заголовок multipart / x-mixed-replace.

Без «multipart / x-mixed-replace» вы все равно можете получить работу с потоковой передачей HTTP в Safari. Вам просто нужно сделать синтаксический анализ самостоятельно.

Morgan Cheng 22.03.2010 14:19

@Leo: Можно ли поделиться фрагментами кода, которые включили Http Streaming во всех браузерах? Это должно быть полезно для меня и сообщества. Спасибо.

ManKum 17.06.2013 10:14
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
10
2
4 470
4

Ответы 4

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

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

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

да.

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

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

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