Добрый день
Помогите разобраться, на стороне клиента создали соединение через
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])));
}
Только браузер почти никогда не попадает с генерацией нужной длинны заголовка.
Если закомментировать условие, то соединение проходит нормально.
Как понять почему не проходит условие?