ssl — соединение wss с php неправильным форматом фрейма

Я делаю запрос wss от js на мой PHP-сервер, и рукопожатие работает хорошо, но кадр данных ответа имеет первые байты как C7 вместо 81, поэтому я не могу декодировать данные.

Я использую доверенный сертификат SSL.

Мой код PHP:

Создание сервера вебсокета:

$context = stream_context_create();
stream_context_set_option($context, 'ssl', 'local_cert', '../../engine/fscert.pem');
stream_context_set_option($context, 'ssl', 'local_pk', '../../engine/fskey.key');
stream_context_set_option($context, 'ssl', 'allow_self_signed', true);
stream_context_set_option($context, 'ssl', 'verify_peer', false);
$errno, $errstr,STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context);
$socket = stream_socket_server("tls://my-server.com:9444", $errno, $errstr,STREAM_SERVER_BIND|STREAM_SERVER_LISTEN, $context);

Функция рукопожатия:

$SecWebSocketAccept = base64_encode(pack('H*', sha1($info['Sec-WebSocket-Key'] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11')));
$upgrade = "HTTPS/1.1 101 Web Socket Protocol Handshake\r\n" .
"Upgrade: websocket\r\n" .
"Connection: Upgrade\r\n" .
"Sec-WebSocket-Accept:$SecWebSocketAccept\r\n\r\n";
fwrite($connect, $upgrade);

Куда я иду не так?

1

Решение

Задача ещё не решена.

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

Других решений пока нет …

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