У меня есть сервер сокетов, который обрабатывает соединения. Здесь у меня есть метод doHandshake
.
function doHandshake($received_header, $client_socket_resource, $host_name, $port) {
var_dump($received_header);
// do stuf here with header
}
Когда я хочу подключиться из клиента javascript , он работает нормально и печатает все заголовки, такие как Sec-WebSocket-Key
. Вот как я использую метод doHandShake на сервере сокетов:
$header = socket_read($newSocket, 1024);
$chatHandler->doHandshake($header, $newSocket, HOST_NAME, PORT);
С другой стороны, у меня есть php-клиент. Когда я подключаюсь из php клиента, header - это строка, которую я отправляю на сервер, а не настоящий заголовок. Вот мой клиентский сокет в php:
$host = "127.0.0.1";
$port = 8090;
$message = "Hello Server";
echo "Message To server :".$message;
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create socket\n");
// connect to server
$result = socket_connect($socket, $host, $port) or die("Could not connect to server\n");
// send string to server
socket_write($socket, $message, strlen($message)) or die("Could not send data to server\n");
// get server response
$result = socket_read ($socket, 1024) or die("Could not read server response\n");
echo "Reply From Server :".$result;
// close socket
socket_close($socket);
Есть идеи, как отправлять заголовки сокетов в php-клиенте?
Примечание: Это делается автоматически в клиенте javascript .