@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])));
    }


Только браузер почти никогда не попадает с генерацией нужной длинны заголовка.
Если закомментировать условие, то соединение проходит нормально.
Как понять почему не проходит условие?
  • Вопрос задан
  • 26 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы