Start in shell WebSocket server:
php -q websockets.php
Start in shell WebSocket client:
php -S 0.0.0.0:8000 websockets.html
please use separated tab in terminal.
Open in browser URL: http://0.0.0.0:8000/ you will see current timestamp updating
Start in shell WebSocket server:
php -q websockets.php
Start in shell WebSocket client:
php -S 0.0.0.0:8000 websockets.html
please use separated tab in terminal.
Open in browser URL: http://0.0.0.0:8000/ you will see current timestamp updating
<html> | |
<body> | |
<div id="root"></div> | |
<script> | |
var host = 'ws://0.0.0.0:12345/websockets.php'; | |
var socket = new WebSocket(host); | |
socket.onmessage = function (e) { | |
document.getElementById('root').innerHTML = e.data; | |
}; | |
</script> | |
</body> | |
</html> |
<?php | |
$address = '0.0.0.0'; | |
$port = 12345; | |
// Create WebSocket. | |
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); | |
socket_set_option($server, SOL_SOCKET, SO_REUSEADDR, 1); | |
socket_bind($server, $address, $port); | |
socket_listen($server); | |
$client = socket_accept($server); | |
// Send WebSocket handshake headers. | |
$request = socket_read($client, 5000); | |
preg_match('#Sec-WebSocket-Key: (.*)\r\n#', $request, $matches); | |
$key = base64_encode(pack( | |
'H*', | |
sha1($matches[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11') | |
)); | |
$headers = "HTTP/1.1 101 Switching Protocols\r\n"; | |
$headers .= "Upgrade: websocket\r\n"; | |
$headers .= "Connection: Upgrade\r\n"; | |
$headers .= "Sec-WebSocket-Version: 13\r\n"; | |
$headers .= "Sec-WebSocket-Accept: $key\r\n\r\n"; | |
socket_write($client, $headers, strlen($headers)); | |
// Send messages into WebSocket in a loop. | |
while (true) { | |
sleep(1); | |
$content = 'Now: ' . time(); | |
$response = chr(129) . chr(strlen($content)) . $content; | |
socket_write($client, $response); | |
} |