2008-12-04 3 views
3

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

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

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

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

ответ

4

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

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

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

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

+0

Да, в конечном итоге визуализировать данные, я провел некоторое тестирование с помощью объекта canvas, и он выглядит достаточно прилично. Спасибо за мысли. – 2008-12-05 00:15:01

1

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

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

+0

Если вы конвертируете в Base64, вы увеличиваете пропускную способность сети ровно на 1/3. Нехорошо, когда вы можете передавать потоки нескольким клиентам. – Matt 2011-02-14 10:27:16

+0

Согласовано. Надеюсь, сжатие HTTP поможет свести к минимуму увеличение полосы пропускания, но это добавит дополнительную нагрузку. В Q было мало деталей, но это был один из вариантов для простого HTML (без плагинов и без учета HTML5 в то время). – Ryan 2011-02-14 19:51:43

1

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

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

2

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

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

2

Мне приходилось делать это точно перед использованием данных видео (например, motion jpeg).

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

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

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

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

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

Так что ваши варианты: тип 1) Содержание смешанного заменить 2) Загрузить плагин Native плагин для браузера (самый быстрый самый эффективный) флэш или SilverLight на основе на основе игрока 3) Javascript

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