WebSocket версия 8 Sec-Websocket-accept nakcom
Вопрос
Я написал сервер WebSocket в C ++, который отлично работает с протоколом websocket 00 (один с Key1, Key2 в заголовке рукопожатия).
Теперь с новым обновлением я пытаюсь сделать то же самое для новой работы по сбору. Вот мой ответ на сервер на запрос рукопожатия:
"Http/1.1 101 Protocols r nupgrade: websocket r nconnection: обновление r nsec-websocket-accept:" + serverkey + " r n r n";
в каком серверке вычисляется правильно. В качестве примера:
Запрос на рукопожатие:
Получить /тестировать http /1.1
Обновление: WebSocket
Соединение: обновление
Ведущий: 192.168.123.102:8585
Sec-Websocket-Origin: http://192.168.123.5
Sec-websocket-key: yb0mpvj5t8ggceguvy39uq ==
Sec-Websocket-версия: 8
Заголовок ответа рукопожатия:
HTTP/1.1 101 протоколы переключения
Обновление: WebSocket
Соединение: обновление
Sec-websocket-accept: xt9iycnryqtseelukhpwjzxa2ts =
Я также проверяю свое алго с примером здесь http://tools.ietf.org/html/draft-ietf-hybi-thewebocketcocketprotocol-08 и это дало точно такой же ответ.
Однако я все еще получаю следующую ошибку:
«Ошибка во время рукопожатия WebSocket: несоответствие SEC-WebSocketCocket-Accept»
Я использую Chrome 15 в качестве браузера.
Вы хоть представляете, что идет не так?
(Также в сети Chrome Inspector, он не показывает ответ, который имеет место, когда он не принимает рукопожатие (даже с более старыми версиями))
Решение
Я действительно узнал, что была основной проблемой.
Ключ, который я использовал для кодирования BASE64, был, был
YB0mPvJ5t8ggCeGUWY39uQ==
258EAFA5-E914-47DA-95CA-C5AB0DC85B11
вместо
YB0mPvJ5t8ggCeGUWY39uQ==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
Дополнительная проблема была всей проблемой.
ОДНАКО, Теперь, когда я получаю подключенное сообщение (клиент WS успешно подключен к WS Sear), я не могу отправить или получить что -либо. Проблема в Серверная сторона.
Знаете ли вы, каковы изменения на стороне сервера со времен более старого протокола WebSocket? Я меняю только ответ рукопожатия, и этого не кажется достаточно.
Другие советы
Существует другой протокол кадрирования, когда клиент отправляет данные. Ранее это было довольно просто. Теперь это намного сложнее. Пожалуйста, обратитесь к спецификации WebSockets RFC6455.