Websocket для двоичной передачи данных и декодирования
Вопрос
Я читал через спецификацию и множество примеров о использовании WebSockets. Почти все они говорят о передаче сообщений UTF-8 или ASCII с помощью WebSockets.
Последний Hybi WebSocket SPEC запросил поддержку бинарной передачи. REQ 6 в спецификации Hybi
Также я прочитал где-то, что Chrome поддерживает Hybi. Но последняя релиз Chrome 7.0 работает только тогда, когда Проект-ХИХИ выбран в конфиге Pywebsocket.
Есть ли у любого браузера поддержки для Hybi Spec? Даже если это dev, это нормально.
Решение
Это может быть некоторое время до того, как в Websockets поддерживается кодировка Non-UTF-8 (т. Е. Двоичная).
Я предлагаю использовать Base64 кодировать / декодировать на клиенте и сервере. Все браузеры с поддержкой WebSockets имеют Window.Atob (Base64 DeCode) и Window.BTOA (кодирование Base64). Большинство языков вы можете написать сервер WebSockets в имеющих библиотеках Base64 (то есть модуль Base64 в Python).
Если вы хотите передать двоичные данные, вы можете быть интересны в WSProxy, включенные в Novnc. который является веб-клиентом VNC. WSProxy (есть версия C и Python) - это Websockets для общего прокси-сервера TCP. IT BASE64 кодирует / декодирует весь трафик к / из браузера. Вы можете использовать его для подключения к браузеру Websockets, способным к любому типу порта TCP.
Примечание, Novnc имеет реализацию javaScript of Base64 кодирования / декодирования / декодирования, потому что вера его или нет, версия JavaScript немного быстрее, чем atob / btoa.
Отказ от ответственности: Я создал Novnc.