Декодировать данные, отправленные через веб-сокет - PullRequest
3 голосов
/ 03 декабря 2011

Я пытаюсь создать простой сервер Python Websocket. Мне удалось сделать рукопожатие и все такое. Однако я не могу понять, как декодировать сообщения, полученные из браузера, это необработанный вывод того, что получает сервер: 'xÙõKþ°pãüCY. Как мне это расшифровать?

Ответы [ 2 ]

3 голосов
/ 03 декабря 2011

Протокол WebSocket включает в себя протокол кадрирования . Браузер не просто отправляет необработанные байты приложения на сервер (и наоборот). Вам нужно разобрать протокол кадрирования, чтобы извлечь необработанные байты.

Многие библиотеки были реализованы для этого анализа. Возможно, вам следует попробовать использовать один из них. Одна из таких библиотек - http://pypi.python.org/pypi/txWS/0.6.1, но если вы не находите это подходящим, вы можете найти другие с небольшим поиском.

0 голосов
/ 03 декабря 2011

Какое сообщение вы отправляете от клиента?И вы уверены, что используете Chrome 8 (это 7 версий устарели).Если вы на самом деле используете последний Chrome, то, скорее всего, ваша проблема заключается в том, что вы не смогли разоблачить полезную нагрузку.Все данные клиент-сервер в новейших версиях протокола (серия HyBi) используют 4-байтовую работающую маску XOR для защиты сломанных посредников от взлома вредоносным Javascript.

См. раздел 5.3 спецификации для описания маскирования полезной нагрузки клиента на сервер.

Также следует помнить, что данные полезной нагрузки кодируются в кодировке UTF-8 (также в более старых протоколах), и вы не можете просто рассматривать их как ASCIIстроки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...