Ответ 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.