веб-сокет для двоичной передачи данных и декодирования - PullRequest
10 голосов
/ 27 сентября 2010

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

В последней спецификации Hybi Websocket запрашивается поддержка двоичной передачи. REQ 6 в спецификации Hybi

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

Есть ли в любом браузере поддержка Hybi Spec? Даже если это dev, все в порядке.

1 Ответ

7 голосов
/ 17 октября 2010

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

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

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

Обратите внимание, что noVNC имеет реализацию Javascript для кодирования / декодирования base64, потому что, верьте этому или нет, версия Javascript немного быстрее, чем atob/btoa.

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

...