Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pustaka WebSocket dalam PHP8.0

Pustaka WebSocket dalam PHP8.0

PHPz
PHPzasal
2023-05-14 09:22:351851semak imbas

Dengan perkembangan pesat Internet dan pengemaskinian berterusan teknologi Web, semakin banyak aplikasi Web mula menggunakan teknologi WebSocket untuk mencapai fungsi komunikasi masa nyata. Sebagai salah satu bahasa pembangunan Web yang paling biasa digunakan, PHP sentiasa mempunyai sokongan terhad untuk WebSocket. Walau bagaimanapun, dalam versi PHP8.0, kami telah melihat beberapa perubahan baharu, yang paling penting ialah pengenalan rasmi perpustakaan WebSocket baharu, yang menyediakan pembangun PHP penyelesaian komunikasi masa nyata yang lebih mudah, cekap dan boleh dipercayai. Artikel ini akan memberikan pengenalan terperinci kepada perpustakaan WebSocket dalam PHP8.0.

1. Pengenalan kepada WebSocket

WebSocket ialah teknologi rangkaian yang membolehkan komunikasi dua hala antara pelayar web dan pelayan web. Selepas sambungan diwujudkan, pelayan boleh menghantar data secara aktif ke penyemak imbas tanpa pelayar menghantar permintaan. Ciri ini menjadikan WebSocket digunakan secara meluas dalam bidang seperti komunikasi masa nyata, permainan dalam talian, sembang dalam talian dan desktop jauh.

2. Sejarah perpustakaan WebSocket PHP

Sebelum PHP, banyak perpustakaan WebSocket yang sangat baik telah dilahirkan, seperti PHPoole's php-websocket, Ratchet, ReactPHP, Swoole, dll. Walaupun perpustakaan ini berkuasa, ia adalah pihak ketiga dan tidak boleh disokong dan diselenggara secara rasmi oleh PHP Mungkin terdapat beberapa masalah keserasian, kestabilan dan keselamatan semasa digunakan.

Oleh itu, untuk menambah baik lagi ekosistem pembangunan web PHP, PHP versi 7.2 memperkenalkan sambungan baharu: ext-sockets. Sambungan ini menyediakan sokongan untuk Socket mentah dan boleh membantu pembangun PHP dengan mudah melaksanakan komunikasi berasaskan Socket. Walau bagaimanapun, disebabkan oleh beberapa batasan, seperti keperluan untuk mengendalikan protokol HTTP secara manual dan ketidakupayaan untuk mengesan penutupan sambungan, masih terdapat kesukaran tertentu untuk menggunakannya dalam aplikasi praktikal.

Akhirnya, dalam versi PHP8.0, PHP secara rasmi memperkenalkan perpustakaan WebSocket baharu: versi dinaik taraf soket ext Pustaka baharu ini membetulkan pengehadan sambungan dan menambah lebih banyak fungsi, sekali gus menyediakan sokongan WebScoket yang Lebih Baik.

3. Ciri baharu dalam PHP8.0

Pustaka WebSocket baharu dalam PHP8.0, dinamakan ext-sockets2, terutamanya menambah ciri berikut:

  1. Sokongan Protokol WebSocket mematuhi standard RFC 6455

Berbeza daripada versi terdahulu sambungan ext-sockets, ext-sockets2 menggunakan protokol WebSocket yang dipertingkatkan yang mematuhi standard RFC 6455. Ini bermakna pembangun boleh menggunakan protokol standard dengan selamat, menjadikannya lebih mudah untuk melaksanakan aplikasi WebScoket.

  1. Menghuraikan permintaan jabat tangan HTTP secara automatik

Di bawah hud sambungan, ext-sockets2 secara automatik menghuraikan permintaan jabat tangan WebSocket dan membina bingkai WebSocket yang sesuai. Ini membolehkan pembangun membuat pelayan WebSocket dengan mudah menggunakan fungsi penciptaan khusus tanpa perlu memahami butiran protokol.

  1. Menyokong data binari

Selain menyokong data teks, ext-sockets2 juga membenarkan pembangun mengendalikan data binari. Ini berguna dalam aplikasi yang perlu menghantar aliran data yang besar atau mengandungi kandungan binari.

  1. Sokong PING/PONG

Dalam protokol WebSocket, pelayan kadangkala perlu menggunakan degupan jantung PING/PONG berdasarkan masa tindak balas pelanggan atau untuk mengesan sama ada pelanggan berada dalam talian untuk mengekalkan status sambungan. Dalam perpustakaan ext-sockets2, kita boleh melaksanakan fungsi ini dengan mudah.

  1. Sokongan menutup sambungan

Dalam beberapa kes, pelayan perlu menutup sambungan dengan klien, seperti semasa memulakan semula pelayan, atau selepas program latar belakang melengkapkan tugas tertentu. Dalam ext-sockets2, kita boleh melaksanakan fungsi ini dengan sangat mudah.

4. Pemasangan dan konfigurasi awal pustaka WebSocket

Anda perlu memasang sambungan ini sebelum menggunakan ext-sockets2 Anda boleh menggunakan arahan berikut:

pecl install sockets

Selepas pemasangan sambungan selesai , anda perlu menambah sambungan ini pada fail php.ini:

extension=sockets

Selepas melengkapkan pemasangan dan konfigurasi sambungan, kami boleh mula menggunakan WebSocket.

5. Gunakan perpustakaan WebSocket untuk menulis atur cara mudah

Mari kita lihat cara menggunakan ext-sockets2 untuk menulis program ringkas. Program ini mendengar mesej daripada klien dan membalasnya:

<?php

$address = '127.0.0.1';
$port = 8080;
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_bind($server, $address, $port);
socket_listen($server);
while (true) {
    $client = socket_accept($server);
    while (true) {
        $input = socket_read($client, 1024);
        if (strlen($input) == 0) {
            socket_close($client);
            break;
        }
        echo $input . PHP_EOL;
        socket_write($client, $input);
    }
}

Dalam program ini, kami menggunakan socket_create() untuk mencipta pelayan soket dan menggunakan socket_bind() untuk mengikatnya pada alamat IP dan port yang ditentukan. Seterusnya, kami menggunakan socket_listen() untuk mula mendengar sambungan klien. Gelung while pertama digunakan untuk mendengar permintaan daripada klien, dan gelung while kedua digunakan untuk memproses mesej daripada klien yang disambungkan.

Dalam program ini, kami menggunakan socket_read() untuk menerima mesej yang dihantar oleh klien dan menggunakan socket_write() untuk mengembalikan mesej ini kepada klien sebagai respons.

6. Ringkasan

Teknologi WebSocket semakin digunakan dalam pembangunan aplikasi Internet. Dalam versi PHP8.0, kami juga melihat perpustakaan WebSocket serba baharu yang diperkenalkan secara rasmi oleh PHP - ext-sockets2, yang membawa banyak ciri baharu, menjadikan pembangun PHP lebih mudah, cekap dan boleh dipercayai apabila melaksanakan WebSocket . Apabila memilih antara perpustakaan WebSocket lama dan baharu, kami juga boleh mencuba sambungan baharu untuk lebih memenuhi keperluan komunikasi masa nyata yang semakin meningkat.

Atas ialah kandungan terperinci Pustaka WebSocket dalam PHP8.0. 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