Форум сайта python.su
Передо мной встала задача реализовать ручками простой сервер на питоне с поддержкой websocket. Конечна я знаю про торнадо, но задача стоит именно в реализации ручками.
Шаг с коннектом и хендшейком(обменом приватных ключей) я сделал, а вот дальше появились проблемы.
1) сообщения от клиента(браузера) приходят не читаемыми….они однозначно закодированы, я находил информацию об этом. Но так и не смог понять как их раскодировать. Ибо в документации говорится о том, что сообщение скрыто под маской (как я понимаю некий ХОР), но ключа для вскрытия этой маски клиент(браузер) почему то не отправляет мне.
2) сообщения, которые отправляет сервер, клиентом(браузером) игнорируются. Отправляю согласно документациям
conn.send(bytes(0x00))
conn.send(u'test'.encode('utf-8'))
conn.send(bytes(0xFF))
Отредактировано (Март 9, 2012 20:57:09)
Офлайн
Не знаю на сколько может быть актуально, но сам столкнулся с такой проблемой. В итоге я её победил – всё зависит от того, какая версия websocket используется браузере.
В случае с Chrome используется либо самая последняя (RFC 6455) либо предыдущие черновики, начиная с версии hybi-07. Для этой версии websocket сообщения (фреймы) нужно составить определенным образом, в спецификации это указано. Код формирования фреймов можно подсмотреть в Tornado
Приведенный же код работает с hybi-00/hixie-76.
Офлайн