Веб-сокеты и двоичные данные

Насколько я знаю, websockets поддерживают двоичную передачу данных. Ошибка двоичной поддержки .

Итак, существуют ли серверы websocket, которые поддерживают двоичную передачу данных? Socket.io, похоже, упускает эту возможность. Может быть, есть и другие?

Ответы

Ответ 1

Поддержка двоичных данных на серверах WebSocket довольно тривиальна (меньше работы, чем UTF-8). Реальная проблема заключается в поддержке двоичных типов данных в браузере. Он работает, но пока еще нет версий браузера, которые могут поддерживать отправку и получение двоичных типов (типизированные массивы, капли).

Если вам нужно отправить бинарные данные прямо перед тем, как браузер добавит поддержку, вы можете попробовать мой websockify сервер python и клиентскую библиотеку Javascript. Он использует кодировку base64 для передачи двоичных данных по проводу. Вместо типизированных массивов /blobs он использует массивы чисел (0-255) для представления двоичных данных на стороне Javascript.

Некоторые ссылки:

Ответ 2

Вот сравнение реализаций WebSockets (браузеры, клиент, серверы), в которых есть строка функций для "двоичных сообщений":

http://en.wikipedia.org/wiki/Comparison_of_WebSocket_implementations

В настоящее время (09/16/2011) браузеры, поддерживающие двоичные сообщения WS,:

  • Chrome 15 или выше
  • IE10 (часть предварительного просмотра Windows 8)
  • Firefox 11 и выше

Подробные отчеты об испытаниях и сравнение с браузером см. в разделе

http://autobahn.ws/testsuite/