Подтвердить что ты не робот

Websocket для двоичной передачи данных и декодирования

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

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

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

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

4b9b3361

Ответ 1

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

Я предлагаю использовать base64 encode/decode на клиенте и сервере. Все браузеры с поддержкой 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, потому что вера в это или нет, версия Javascript немного быстрее, чем atob/btoa.

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