猫言猫语

严以律己·宽以待人·自强不息·知行合一

PHP WebSocket Server Demo

| PHP WebSocket Server Demo已关闭评论

<?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);

评论已关闭。