Задать вопрос
@zeddicus

Ratchet handeshake не проходит верификацию, в чем проблема?

Добрый день

Помогите разобраться, на стороне клиента создали соединение через
var conn = new WebSocket('wss://site.com:45333/ws/');

На серваке через nginx proxy запрос попадает на php скрипт, где запущен ratchet ws server
$server = IoServer::factory(new HttpServer(new WsServer(new Chat()), 45340);
$server->run();

Тут вопросов нет, контакт есть, но ratchet возвращает 400 ошибку во время рукопожатия, т.к. одно из условий не проходит проверку, а именно:

ServerNegotianor.php
if (true !== $this->verifier->verifyKey($request->getHeader('Sec-Websocket-Key'))){

}


public function verifyKey($keyHeader) {
        return (1 === count($keyHeader) && 16 === strlen(base64_decode($keyHeader[0])));
    }


Только браузер почти никогда не попадает с генерацией нужной длинны заголовка.
Если закомментировать условие, то соединение проходит нормально.
Как понять почему не проходит условие?
  • Вопрос задан
  • 32 просмотра
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽