2010-09-27 2 views
10

Я читал спецификацию и много примеров об использовании websockets. Почти все они говорят о передаче сообщений UTF-8 или ascii с помощью websockets.websocket для двоичной передачи данных и декодирования

Последняя спецификация Hybi websocket запрашивала поддержку для двоичной передачи. REQ 6 in hybi spec

Также я читал, что хром поддерживает hybi. Но последняя версия Chrome 7.0 работает только тогда, когда в конфигурации pywebsocket выбран draft-hixie.

Поддерживает ли какой-либо браузер спецификацию hybi? Даже если это dev, все в порядке.

+2

Я думаю, вы это уже знаете, но в качестве общего обновления для всех - Chrome Canary теперь поддерживает это. – pimvdb

ответ

7

Может быть некоторое время до того, как в WebSockets поддерживается кодирование без UTF-8 (то есть бинарное).

Предлагаю использовать кодировку/декодирование base64 на клиенте и сервере. Все браузеры с поддержкой WebSockets имеют window.atob (base64 decode) и window.btoa (base64 encode). Большинство языков, на которых вы можете написать сервер WebSockets, имеют библиотеки base64 (т. Е. Модуль base64 в python).

Если вы хотите передать двоичные данные, вы можете быть интересны в wsproxy, входящем в состав noVNC, который является веб-клиентом VNC. wsproxy (есть версия C и python) - это WebSockets для общего прокси-сервера сокетов TCP. Он base64 кодирует/декодирует весь трафик в/из браузера. Вы можете использовать его для подключения из браузера, совместимого с WebSockets, для любого типа TCP-порта.

Замечание: noVNC имеет Javascript-реализацию base64 encode/decode, потому что вера в это или нет, версия Javascript немного быстрее, чем atob/btoa.

Отказ от ответственности: Я создал noVNC.

+1

Обновление: проект протокола IETF-07 протокола WebSockets находится в последнем вызове и поддерживает двоичный фрейм. Вот ошибка с обсуждением изменений API, чтобы добавить двоичную поддержку: http://www.w3.org/Bugs/Public/show_bug.cgi?id=12102 – kanaka

Смежные вопросы