Сообщения Websocket после рукопожатия

Я установил связь через веб-сокет на моем сервере, в C ++. У меня проблема с протоколом websocket. Когда я получаю сообщение о рукопожатии в текстовом формате, я отвечаю на рукопожатие и отправляю обратно в текстовом формате, и соединение открывается, но при отправке второго сообщения в браузер соединение не удается.
Но если я добавлю ответ о рукопожатии в рамку первого сообщения, позже все будет нормально, у меня не возникнет проблем с другими сообщениями.

Mozzila firefox: Соединение с ws: // localhost / было прервано во время загрузки страницы.
Google chrome: сбой подключения WebSocket к ‘ws: // localhost /’: сервер не должен маскировать кадры, отправляемые клиенту.

Я не маскирую никаких кадров.

Это работает на Mozzila Firefox и Google Chrome, но не работает на сафари.
Итак, кто-нибудь знает, в чем проблема? У кого-нибудь была эта проблема?

Спасибо

0

Решение

Вы говорите, что не маскируете никакие кадры (от сервера к клиенту), в данных, которые вы отправляете обратно, проверьте первый бит второго байта.

В соответствии с RFC6445 первый бит второго байта (флаг маски) ДОЛЖЕН быть установлен в 0 при отправке данных клиенту. Если ваш фрейм не установлен правильно, и этот бит установлен в 1, браузер будет жаловаться на «Сервер не должен маскировать любые фреймы, которые он отправляет клиенту»

Также это может быть для вас неуместно, но убедитесь, что у вас нет завершающих данных в части кода обновления / рукопожатия, при работе с веб-сокетами наличие конечного chr (0) (нулевого символа) вызвало проблемы для меня позже когда я пытался отправить данные клиента.

0

Другие решения


По вопросам рекламы [email protected]