Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk membina persekitaran websocket dalam php

Bagaimana untuk membina persekitaran websocket dalam php

藏色散人
藏色散人asal
2022-10-27 10:33:192476semak imbas

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.

Bagaimana untuk membina persekitaran websocket dalam php

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn