WebSocket ialah teknologi yang membolehkan komunikasi dupleks penuh antara klien web dan pelayan web. Ini membolehkan pemindahan data masa nyata, menjadikannya sesuai untuk aplikasi seperti permainan dalam talian, pemesejan segera dan penstriman data kewangan.
Pustaka phpwebsockets yang disebut dalam soalan sememangnya ketinggalan zaman dan tidak menyokong protokol WebSocket terkini. Selain itu, mengemas kininya mungkin tidak berfungsi seperti yang dimaksudkan.
Berikut ialah contoh coretan kod PHP untuk pelayan WebSocket ringkas:
<?php $master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); socket_set_option($master, SOL_SOCKET, SO_REUSEADDR, 1); socket_bind($master, 'localhost', 12345); socket_listen($master, 20); $sockets = array($master); $users = array(); $debug = false; while (true) { $changed = $sockets; socket_select($changed, $write = NULL, $except = NULL, NULL); foreach ($changed as $socket) { if ($socket == $master) { $client = socket_accept($master); if ($client < 0) { console("socket_accept() failed"); continue; } else { connect($client); } } else { $bytes = @socket_recv($socket, $buffer, 2048, 0); if ($bytes == 0) { disconnect($socket); } else { $user = getuserbysocket($socket); if (!$user->handshake) { dohandshake($user, $buffer); } else { process($user, $buffer); } } } } }
Rangka kod ini menunjukkan langkah yang dibincangkan di atas, termasuk mencipta dan mendengar pada soket induk, menerima masuk sambungan, melakukan jabat tangan WebSocket, dan memproses mesej pelanggan. Skrip lengkap harus ditambah dengan baki fungsi yang diterangkan sebelum ini, seperti connect(), disconnect(), dan process().
Atas ialah kandungan terperinci Bagaimana untuk Membina Pelayan WebSocket dalam PHP Menggunakan Fungsi `socket_*`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!