![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Fynivx |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 13.8.2011 Репутация: нет Всего: 1 |
Доброго времени суток, уважаемые форумчане. Живу я хорошо. Есть свой дом, он теплый... Ой. О чем это я? Ах, да. Решил я, значит, ради развлечения написать небольшой WebSocket сервер, и прикрутить его к своему веб-серверу. И только дошел до формирования заголовков для ответа браузеру - уткнулся в огромную каменную стену. И так, и этак бился я об нее, да никакого толку.
В чем суть: Браузер работает с 76ой версией протокола. Вот что там нужно сделать вконце: 1. Из строки со значением заголовка запроса Sec-WebSocket-Key1 исключить все символы, не являющиеся цифрами (не попадающие в диапазон '0'..'9'); 2. Полученную строку превратить в 64-битное целое число (для примера выше получим 1299853100); 3. Полученное число разделить целочисленным делением на количество пробелов в исходной строке со значением заголовка; 4. Полученное число представить в виде 4-х байтового 32-битного числа в формате big endian: старший байт хранится по нулевому смещению; 5. Проделать то же самое с заголовком Sec-WebSocket-Key2; 6. Интерпретируя числа из пунктов 4) и 5) как 4-х байтовые строки, конкатенировать их (сложить в одну строку) и добавить как строку тело запроса; 7. Вычислить от полученной 16-байтной строки значение MD5 и записать это значение в тело ответа "как есть", без преобразования в какое-либо представление; (пруф) Именно после посылания этой эмм... этой штуки браузер меня и посылает. Предположительно проблемные участки кода
Не знаю - в днк ли у меня ошибка, или просто думать разучился, но проблема есть, в связи с чем, отчаявшись, и обращаюсь к вам. Скажите, пожалуйста, что я делаю не так? =/ Вот ссылка на всё написанное на данный момент. Всем заранее огроооомное спасибо. Или ошибка просто в доверии википедии? =/ |
||||
|
|||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 2 Всего: 39 |
А готовое не хотите использовать? На cpan по запросу "websocket" есть кое-что.
|
|||
|
||||
| Fynivx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 13.8.2011 Репутация: нет Всего: 1 |
Хм... Ну, да. Собственно Net::Async::WebSocket и Protocol::WebSocket.
Покопаюсь в коде, может, они чего-то и стоя. Спасибо. |
|||
|
||||
| Fynivx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 13.8.2011 Репутация: нет Всего: 1 |
Вы не поверите. Второй ведет себя точно как мой, а первый вообще через -MCPAN с моего зеркала не ставится.
Вывод - пойдем со злости писать под node.js и ругаться с техподдержкой гугля. Кстати, да. Еще на кодегугле посмотреть нужно, что они там с этим протоколом творят. |
|||
|
||||
| Fynivx |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 72 Регистрация: 13.8.2011 Репутация: нет Всего: 1 |
||||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
||||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |