Cara membina persekitaran websocket dalam PHP: 1. Cari sambungan soket dalam fail php.ini dan padam koma bertitik di hadapannya; 2. Tingkatkan http kepada websocket; PHP Tambah laluan ke Path 4. Masukkan "php Path" dalam cmd.
Persekitaran pengendalian tutorial ini: sistem Windows 7, PHP versi 8.1, komputer Dell G3.
Bagaimana untuk menyediakan persekitaran soket web dalam PHP?
Buat pelayan soket web dalam PHP
Untuk mencipta pelayan ini, anda perlu mendayakan sambungan soket dahulu Jika ia tidak didayakan, ralat akan berlaku dilaporkan walau apa pun
Cuma cari sambungan soket dalam fail php.ini dan padamkan koma bertitik di hadapannya untuk membukanya
Sebelum membuka:
;extension=sockets
Selepas membuka:
extension=sockets
Selepas membuka, kita boleh sampai ke intinya, kita memahami beberapa fungsi:
socket_create(AF_INET, SOCK_STREAM, SOL_TCP);//用于创建套接字 socket_bind( $this->master,$ip,$port);//用于绑定ip和端口 socket_listen( $this->master,1000);//用于调用connect连接的套接字和监听相关端口 socket_accept($this->master);//负责握手连接 socket_recv($socket, $buffer, 1024, 0);//从已连接的socket(客户端)接收数据 socket_write($socket,$upgrade,strlen($upgrade));//给单独客户端发送数据 send($message)//发送数据 socket_close($socket);//断开连接
Banyak langkah yang serupa dengan mencipta soket dalam PHP ,
Perbezaan utama terletak pada penggunaan socket_write dan data perlu dinyahkod dan dibingkaikan Kami perlu menaik taraf http kepada websocket
http kepada websocket
if(preg_match("/Sec-WebSocket-Key: (.*)\r\n/",$buffer,$match)){ $responseKey=base64_encode(sha1($match[1] . '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',true)); $upgrade="HTTP/1.1 101 Switching Protocol\r\n". "Upgrade: websocket\r\n". "Connection: Upgrade\r\n". "Sec-WebSocket-Accept:".$responseKey."\r\n\r\n"; socket_write($socket,$upgrade,strlen($upgrade)); }
$socket. ialah sambungan yang kami buat, $buffer ialah yang pertama daripada pelanggan Data dihantar semasa sambungan pertama
Nota: Sec-WebSocket-Key: (.*)//Mesti ada ruang antara kurungan dan titik bertindih
Mendeframerah
$len=$masks=$data=$decoded=null; $len=ord($buffer[1]) & 127; if($len === 126){ $masks=substr($buffer,4,4); $data=substr($buffer, 8); }else if($len === 127){ $masks=substr($buffer,10,4); $data=substr($buffer, 14); }else{ $masks=substr($buffer,2,4); $data=substr($buffer, 6); } for($index = 0;$index<strlen($data);$index++){ $decoded.=$data[$index] ^ $masks[$index % 4]; } return $decoded;
$buffer ialah data yang dihantar apabila pelanggan menyambung buat kali pertama
Menyekat bingkai
$len=strlen($message); if($len<=125){ return "\x81".chr($len).$message; }else if($len<=65535){ return "\x81".chr(126).pack("n",$len).$message; }else{ return "\x81".chr(127).pack("xxxxN",$len).$message; }
$mesej ialah data kita perlu menghantar
Sebelum sambungan front-end Ingat untuk menjalankan pelayan, menjalankan kaedah:
Dalam cmd masukkan
php 你的服务端PHP文件路径
Konfigurasikan pembolehubah persekitaran sebelum menjalankan: tambahkan anda Laluan pemasangan PHP ke Laluan
Kajian Disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Bagaimana untuk membina persekitaran websocket dalam php. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!