<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "0.0.0.0", 9501);
socket_listen($socket, 5);
for(;;) {
$client = socket_accept($socket);
if (!pcntl_fork()) {
$buffer = socket_read($client, 2048);
$headers = explode("\r\n", $buffer);
foreach($headers as $header) {
if (strstr($header, "Sec-WebSocket-Key:")) {
$key = trim(str_replace("Sec-WebSocket-Key:", "", $header));
$accept = base64_encode(sha1($key . "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));
}
}
socket_write($client, "HTTP/1.1 101 Switching Protocols\r\n");
socket_write($client, "Upgrade: websocket\r\n");
socket_write($client, "Connection: Upgrade\r\n");
socket_write($client, "Sec-WebSocket-Accept: $accept\r\n");
socket_write($client, "\r\n");
for ($i = 0;; $i++) {
$buffer = socket_read($client, 2048);
echo $buffer;
}
socket_close($client);
exit(0);
} else {
socket_close($client);
}
}
socket_close($socket); |
<?php
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($socket, "0.0.0.0", 9501);
socket_listen($socket, 5);
for(;;) {
$client = socket_accept($socket);
if (!pcntl_fork()) {
$buffer = socket_read($client, 2048);
$headers = explode("\r\n", $buffer);
foreach($headers as $header) {
if (strstr($header, "Sec-WebSocket-Key:")) {
$key = trim(str_replace("Sec-WebSocket-Key:", "", $header));
$accept = base64_encode(sha1($key . "258EAFA5-E914-47DA-95CA-C5AB0DC85B11", true));
}
}
socket_write($client, "HTTP/1.1 101 Switching Protocols\r\n");
socket_write($client, "Upgrade: websocket\r\n");
socket_write($client, "Connection: Upgrade\r\n");
socket_write($client, "Sec-WebSocket-Accept: $accept\r\n");
socket_write($client, "\r\n");
for ($i = 0;; $i++) {
$buffer = socket_read($client, 2048);
echo $buffer;
}
socket_close($client);
exit(0);
} else {
socket_close($client);
}
}
socket_close($socket);