Dengan perkembangan pesat Internet, semakin banyak aplikasi perlu melaksanakan fungsi pemesejan segera, seperti sembang dalam talian, pemantauan data masa nyata, dsb. Protokol HTTP tradisional tidak sesuai untuk senario ini kerana ia berdasarkan permintaan/tindak balas, dan pelanggan mesti terus menghantar permintaan kepada pelayan untuk mendapatkan data terkini, yang membawa banyak overhed dan kelewatan.
Untuk menyelesaikan masalah ini, teknologi WebSocket datang. WebSocket boleh mewujudkan saluran komunikasi dua hala antara pelanggan dan pelayan, supaya kedua-dua pihak boleh menghantar data pada bila-bila masa dan tidak perlu mengambil berat tentang proses permintaan/tindak balas. PHP juga merupakan bahasa sebelah pelayan yang sangat popular yang boleh melaksanakan fungsi WebSocket dengan mudah.
Artikel ini akan memperkenalkan secara ringkas prinsip dan kaedah pelaksanaan WebSocket, serta penyelesaian yang sempurna untuk melaksanakan WebSocket menggunakan PHP, dan melampirkan contoh kod khusus untuk membantu semua orang memahami teknologi WebSocket secara mendalam.
Prinsip dan pelaksanaan WebSocket
WebSocket ialah protokol komunikasi berdasarkan protokol TCP, yang boleh mewujudkan saluran komunikasi dua hala antara pelanggan dan pelayan untuk mencapai fungsi komunikasi masa nyata. Ciri utama protokol WebSocket termasuk aspek berikut:
Sebelum mewujudkan sambungan WebSocket antara klien dan pelayan, proses jabat tangan naik taraf protokol HTTP diperlukan. Proses ini serupa dengan proses jabat tangan HTTP, tetapi protokol akan berubah daripada HTTP kepada WebSocket selepas menaik taraf jabat tangan.
Mod komunikasi WebSocket adalah dupleks penuh, yang bermaksud bahawa pelanggan dan pelayan boleh menghantar dan menerima data pada masa yang sama tanpa menunggu proses respons permintaan seperti HTTP.
WebSocket bukan sahaja menyokong penghantaran data teks, tetapi juga menyokong penghantaran data binari, yang memberikan kemudahan untuk beberapa aplikasi yang perlu menghantar data binari.
Apabila melaksanakan fungsi WebSocket, terdapat dua cara biasa:
Menggunakan pelayan WebSocket memerlukan pemasangan pelayan WebSocket pada pelayan dan menggunakan API WebSocket yang disediakan untuk pembangunan. Kaedah ini memerlukan teknologi profesional untuk konfigurasi dan penyelenggaraan, jadi kos pembangunan adalah tinggi.
Menggunakan bahasa PHP untuk melaksanakan WebSocket adalah agak mudah Anda hanya perlu menulis kod berkaitan WebSocket pada bahagian pelayan untuk mencapai fungsi komunikasi masa nyata. Kaedah ini agak rendah dalam kos pembangunan dan kesukaran penyelenggaraan, jadi ia digunakan secara meluas.
PHP ialah penyelesaian yang sempurna untuk melaksanakan WebSocket
Apabila menggunakan PHP untuk melaksanakan fungsi WebSocket, anda boleh menggunakan perpustakaan sambungan Swoole PHP. Swoole ialah perpustakaan sambungan PHP dengan prestasi cemerlang dan fungsi berkuasa Ia bukan sahaja menyokong pelaksanaan WebSocket, tetapi juga menyediakan sokongan untuk protokol komunikasi HTTP, TCP dan UDP. Di bawah ini kami memperkenalkan secara terperinci cara menggunakan perpustakaan sambungan Swoole untuk melaksanakan fungsi WebSocket.
Sebelum menggunakan perpustakaan sambungan Swoole, anda perlu memasangnya terlebih dahulu. Adalah disyorkan untuk menggunakan alat PECL untuk pemasangan Arahan khusus adalah seperti berikut:
$ pecl install swoole
Selepas pemasangan selesai, anda perlu menambah konfigurasi berikut pada fail konfigurasi PHP:
extension=swoole.so
Melaksanakan pelayan WebSocket dalam PHP memerlukan langkah-langkah berikut:
<?php // 创建 WebSocket 服务器对象 $server = new SwooleWebsocketServer("0.0.0.0", 9501); // 监听 WebSocket 服务器端口 $server->on('open', function (SwooleWebsocketServer $server, $request) { echo "client {$request->fd} connected "; }); // 处理消息事件 $server->on('message', function (SwooleWebsocketServer $server, $frame) { echo "receive message from client: {$frame->data} "; $server->push($frame->fd, "server received: {$frame->data}"); }); // 处理关闭事件 $server->on('close', function (SwooleWebsocketServer $server, $fd) { echo "client {$fd} closed "; }); // 启动 WebSocket 服务器 $server->start();
// 创建 WebSocket 对象 var ws = new WebSocket("ws://127.0.0.1:9501"); // 监听连接事件 ws.onopen = function() { console.log("websocket connected"); }; // 监听消息事件 ws.onmessage = function(e) { console.log("receive message from server: " + e.data); }; // 发送消息 ws.send("hello world");
Atas ialah kandungan terperinci PHP dan WebSocket: penyelesaian yang sempurna untuk komunikasi segera. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!