<?php
$host = 'localhost'; //where is the websocket server
$port = 8080; //ssl
$local = "http://localhost/php-websockets-master/"; //url where this script run
$data = '{"id": 2,"command": "server_info"}'; //data to be send
$head = "GET / HTTP/1.1"."\r\n".
"Upgrade: WebSocket"."\r\n".
"Connection: Upgrade"."\r\n".
"Origin: $local"."\r\n".
"Host: $host"."\r\n".
"Content-Length: ".strlen($data)."\r\n"."\r\n";
////WebSocket handshake
$sock = fsockopen($host, $port, $errno, $errstr, 2);
fwrite($sock, $head ) or die('error:'.$errno.':'.$errstr);
$headers = fread($sock, 2000);
sleep(1);
fwrite($sock, "\x00$data\xff" ) or die('error:'.$errno.':'.$errstr);
$wsdata = fread($sock, 2000); //receives the data included in the websocket package "\x00DATA\xff"$retdata = trim($wsdata,"\x00\xff"); //extracts data
////WebSocket handshake
fclose($sock);
echo $headers;
echo $retdata;
?>
это код, который я использую, и серверная часть просто повторяет отправленную ему строку.
Я проверил серверный код, написанный на php, и он прекрасно работает с клиентским кодом javascript. Когда вышеупомянутый код выполняется, он печатает только заголовок, а это «HTTP / 1.1 426 Upgrade Required Sec-WebSocketVersion: 13». Любая помощь, объясняя это было бы здорово. Пожалуйста, не предлагайте использовать Ratchet или React php. Если вы можете предложить какую-то библиотеку, которую не нужно устанавливать, то это тоже очень поможет.
Задача ещё не решена.
Других решений пока нет …