потоковая передача двоичных данных через http - PullRequest
3 голосов
/ 04 декабря 2008

Я смотрю потоковую передачу двоичных данных в браузер (через http). Я ищу мнения относительно хороших способов сделать это. В конечном итоге у меня будет источник данных в реальном времени, и я хотел бы манипулировать этими данными и отображать их (в реальном времени) в браузере. Сначала стоит Firefox, IE был бы хорош ... но я не такой привередливый. У меня есть плагин Firefox, который делает то, что мне нужно, но я бы предпочел что-то написанное в javascript / html, которое работало бы без необходимости установки каких-либо плагинов.

Я смотрел на MIME / мультимедийный тип multipart / x-mixed-replace и похоже, что он может быть полезен в этом проекте, но я хотел бы услышать мнения о лучших способах сделать это (если есть) до Я трачу слишком много часов на этот путь.

Возможно, Flash выполнит свою работу, но я бы хотел избежать плагинов. Я хотел бы иметь самое простое из возможных решений (не так ли?), В идеале просто javascript / html.

Я также заглянул в Комету, чтобы узнать, что это может для меня сделать.

Ответы [ 5 ]

4 голосов
/ 04 декабря 2008

Многое зависит от того, что вы хотите сделать с данными. Я предполагаю сделать это.

Flash, вероятно, будет самым простым решением. Это достаточно распространенное дополнение, которое почти все должны иметь к настоящему моменту; таким образом, вы не подвергаетесь большой опасности несовместимости.

JavaScript просто не считался хорошей платформой для обработки двоичных данных - поэтому в этой области не было слишком много разработок. Я не думаю, что вы найдете много помощи для того, что вы хотите. Особенно, когда вы получаете точку рендеринга - если только вы не можете возможно преобразовать каждый двоичный файл в сценарий холста , поскольку это единственное динамическое отображение, доступное в JavaScript.

IE на самом деле может быть исключением, поскольку вы можете использовать некоторые объекты ActiveX для выполнения этого для нескольких типов файлов. Но тогда вы отключите большинство других браузеров.

2 голосов
/ 14 февраля 2011

Раньше мне приходилось делать именно эту вещь с данными Video (т.е. motion jpeg).

Замечу, что вы только что сказали "двоичные данные" ... это данные изображения или нет? что это?

multipart / x-mixed-replace прекрасно работает во многих браузерах в наши дни. Я думаю, что это может даже поддерживаться в более поздних версиях IE. Это, безусловно, работает во всех версиях Firefox примерно 5 лет назад, когда мне пришлось это реализовать. Вероятно, поддерживаются браузеры на основе Webkit, включая Chrome и Safari.

Однако, на мой взгляд, это действительно подходит только для приложений на основе локальной сети. Причина в том, что вы отправляете МНОГО данных. Вместо отправки различий между последовательными кадрами (если это видео) вы будете отправлять цельные изображения каждый раз. В зависимости от количества пользователей, это также может стать тяжелым бременем для пропускной способности сервера.

Таким образом, хотя multipart / x-mixed-replace является наиболее простым в реализации, это не обязательно самое подходящее решение. Опять же, это зависит от вашего типа необработанных данных.

Для видео вы можете теоретически написать что-то в javascript, чтобы сделать это. На самом деле, если вы ищете Google для видеоплеера JavaScript, вы можете найти некоторые из них. Я сомневаюсь, что они ужасно быстрые и, вероятно, возложат тяжелую нагрузку на клиентскую машину. Тем не менее, это кажется выполнимым.

Итак, ваши варианты: 1) Тип контента смешанный-заменить 2) Скачать плагин Родной плагин для браузера (самый быстрый и эффективный) На основе вспышки или серебряного света 3) Javascript-плеер

Если вам нужно видео, последний вариант, который находится на переднем крае, 4) Видео на основе HTML5. http://www.html5video.org/ Поскольку стандарты все еще утверждаются, а поддержка браузеров ограничена, я бы не стал рекомендую это сейчас.

2 голосов
/ 21 мая 2009

Что касается потоковой передачи данных и соединений в стиле сокетов, вы можете взглянуть на проект APE (Ajax Push Engine) . Это позволяет вам настроить HTTP-прокси, через который ваш JavaScript может соединяться для истинных соединений сокетов.

Что касается того, что делать с данными, когда они поступают, я проверил концепцию, показывающую, как вы можете работать с необработанными данными PNG, анализировать их и отображать в браузере. Проверьте это.

1 голос
/ 05 декабря 2008

Я бы вообще не использовал multipart / x-mixed-replace, так как он имеет довольно схематичную поддержку браузера. Я знаю, что multipart / x-mixed-replace моих камер не работает в IE или более новых версиях Firefox (хотя, очевидно, есть конфигурация, чтобы это изменить)

Я думаю, что маленькое приложение Flash может быть одним из ваших лучших вариантов.

1 голос
/ 05 декабря 2008

Вы можете использовать Base64, чтобы преобразовать двоичный файл в текст и отправить его в браузер. С IE вы можете конвертировать его непосредственно в двоичный файл, но я не уверен, что вы можете сделать это с Firefox и другими. Я видел jscripts для Base64 enflate / deflate и скрипт с именем base64.js, который, вероятно, также выполняет преобразование.

Однако вам, вероятно, лучше преобразовать двоичные данные в JSON и использовать AJAX для передачи данных, а затем обрабатывать их как объект javascript в браузере. Веб-сервер будет отвечать за сбор данных и их преобразование в JSON, поэтому вы сможете обрабатывать двоичный файл независимо от того, какой язык программирования вы используете.

...