Rumah > Artikel > rangka kerja php > Cara menggunakan Swoole untuk melaksanakan interaksi pelayan dan klien WebSocket
WebSocket telah menjadi protokol komunikasi masa nyata yang biasa digunakan dalam aplikasi web moden. Membangunkan pelayan WebSocket menggunakan PHP secara amnya memerlukan penggunaan sambungan seperti Swoole, kerana ia menyediakan sokongan untuk pengaturcaraan tak segerak, pengurusan proses, pemetaan memori dan ciri berkaitan WebSocket yang lain. Dalam artikel ini, kami akan membincangkan cara menggunakan Swoole untuk melaksanakan interaksi pelayan-pelanggan WebSocket dan menyediakan beberapa contoh kod khusus.
Swoole ialah sambungan PHP yang sangat baik yang menyediakan sokongan yang sangat baik untuk melaksanakan pelayan WebSocket. Swoole menyokong pengaturcaraan tak segerak dan akses serentak berbilang proses dan berbilang benang. Ia menguruskan kitaran hayat pelayan dan menyediakan ciri berguna lain seperti pemetaan memori. WebSocket ialah protokol komunikasi masa nyata yang biasa digunakan dalam aplikasi Web moden Menggunakan Swoole untuk membangunkan pelayan WebSocket membolehkan kami melaksanakan komunikasi masa nyata dengan mudah dengan pelanggan.
Mula-mula anda perlu memasang sambungan Swoole, yang boleh dipasang melalui arahan berikut:
pecl install swoole
Selepas pemasangan, anda perlu memasangnya dalam php.ini Tambahkan konfigurasi berikut pada fail:
extension=swoole
Selepas menyelesaikan operasi di atas, anda boleh menggunakan sambungan Swoole dalam PHP.
Seterusnya, anda perlu membina klien WebSocket secara setempat Anda boleh menggunakan beberapa alatan rangkaian atau memasang pemalam penyemak imbas Chrome "Simple WebSocket Client".
Dalam proses ini, anda perlu membuat contoh pelayan Swoole WebSocket dahulu dan melakukan beberapa konfigurasi asas, seperti menetapkan port mendengar dan Alamat IP pelayan WebSocket , dan juga perlu memproses pelbagai acara dan data pelayan WebSocket. Berikut ialah contoh mudah:
$server = new SwooleWebsocketServer("0.0.0.0", 9501); $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "connection open: {$request->fd} "; }); $server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; $server->push($frame->fd, json_encode(["hello", "world"])); }); $server->on('close', function (SwooleWebSocketServer $server, $fd) { echo "connection close: {$fd} "; }); $server->start();
Dalam kod di atas, tika pelayan WebSocket dibuat menggunakan kata kunci baharu. Pembinanya perlu memasukkan alamat IP dan nombor port, dan Swoole akan mendengar sambungan WebSocket pada port ini. Kemudian, beberapa fungsi panggil balik digunakan untuk mengendalikan acara buka, mesej dan tutup pelayan WebSocket masing-masing. Akhir sekali, panggil kaedah $server->start() untuk memulakan pelayan WebSocket.
Selepas mencipta contoh pelayan WebSocket, anda boleh mengendalikan semua acara pengguna dengan mengikat semula panggilan balik acara. Sebagai contoh, kita boleh mengendalikan acara terbuka sambungan klien WebSocket ke pelayan dengan mengikat semula fungsi panggil balik 'terbuka'.
Terdapat dua cara untuk klien dan pelayan WebSocket berinteraksi: pelayan boleh menolak data kepada klien, dan klien juga boleh menghantar data ke pelayan WebSocket.
Pelayan boleh menolak data kepada pelanggan tertentu atau semua pelanggan menggunakan kaedah $server->push(). Berikut ialah contoh mudah:
$server->push($frame->fd, json_encode(["hello", "world"]));
Dalam kod di atas, $frame->fd ialah pengecam unik pelanggan. Sambungan WebSocket boleh dianggap sebagai sambungan TCP yang terbuka kepada pelayan, di mana klien dikenal pasti oleh pengecam unik ($frame->fd).
Pelanggan boleh menggunakan API WebSocket yang ditulis dalam JavaScript untuk menghantar data ke pelayan. Berikut ialah coretan kod JavaScript ringkas yang menunjukkan cara menghantar data ke pelayan WebSocket.
const socket = new WebSocket('ws://localhost:9501'); socket.addEventListener('open', function (event) { socket.send('Hello World!'); // 发送数据 });
Komunikasi antara klien dan pelayan adalah berasaskan peristiwa, jadi data yang diterima perlu diproses melalui pengendali acara. Fungsi panggil balik perlu terikat pada acara WebSocket 'mesej', yang akan bertanggungjawab untuk memproses data yang diterima. Berikut ialah contoh mudah:
$server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; });
Berikut ialah contoh pelayan Swoole WebSocket yang lengkap, menunjukkan cara menggunakan Swoole untuk mewujudkan pelayan WebSocket dan berkomunikasi dengan Interaksi klien.
Pelayan WebSocket ini akan mendengar dan mengendalikan sambungan WebSocket pada port 9501. Anda boleh menggunakan mana-mana klien WebSocket untuk menguji dan meneroka contoh pelayan ini.
Atas ialah kandungan terperinci Cara menggunakan Swoole untuk melaksanakan interaksi pelayan dan klien WebSocket. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!