Bagaimana untuk membina persekitaran websocket dalam php

藏色散人
Lepaskan: 2023-03-17 10:00:02
asal
2469 orang telah melayarinya

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
Salin selepas log masuk

Selepas membuka:

extension=sockets
Salin selepas log masuk

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);//断开连接
Salin selepas log masuk

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));
        }
Salin selepas log masuk

$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;
Salin selepas log masuk

$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;
}
Salin selepas log masuk

$mesej ialah data kita perlu menghantar

Sebelum sambungan front-end Ingat untuk menjalankan pelayan, menjalankan kaedah:

Dalam cmd masukkan

php 你的服务端PHP文件路径
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan