Rumah > Artikel > pembangunan bahagian belakang > Cipta aplikasi web masa nyata menggunakan WebSockets dalam PHP
Aplikasi web semakin popular di Internet moden, dan aplikasi sedemikian boleh memberikan pengalaman dan interaksi pengguna yang kaya. Walau bagaimanapun, model respons permintaan HTTP tradisional mempunyai had tertentu dalam prestasi dan kecekapan masa nyata. Untuk menyelesaikan masalah ini, WebSocket wujud. WebSocket ialah protokol komunikasi dupleks penuh yang membolehkan komunikasi masa nyata antara pelanggan dan pelayan. Dalam artikel ini, kami akan membincangkan cara membuat aplikasi web masa nyata menggunakan PHP dan WebSocket.
WebSocket ialah protokol komunikasi dupleks penuh berasaskan TCP yang membenarkan komunikasi dua hala pada sambungan TCP yang sama. Protokol HTTP tradisional hanya membenarkan komunikasi permintaan-tindak balas sehala antara klien dan pelayan. Dengan protokol WebSocket, selepas sambungan diwujudkan, pelanggan dan pelayan boleh menghantar data pada bila-bila masa tanpa menunggu permintaan. Sifat dan kecekapan masa nyata ini menjadikan protokol WebSocket sesuai untuk pembangunan aplikasi web masa nyata.
Dalam aplikasi web masa nyata, operasi pengguna dan kemas kini data perlu dihantar semula kepada pengguna tepat pada masanya untuk menyediakan pengguna yang lebih baik pengalaman. Model respons permintaan HTTP tradisional mempunyai kelewatan tertentu dan tidak dapat memenuhi keperluan komunikasi masa nyata. Selain itu, model respons permintaan HTTP juga meletakkan beban yang tinggi pada pelayan Setiap permintaan memerlukan sambungan baharu, yang meningkatkan overhed komunikasi. Oleh itu, menggunakan WebSocket boleh meningkatkan prestasi masa nyata dan mengurangkan beban pada pelayan.
Dalam PHP, anda boleh mencipta pelayan WebSocket dengan mudah dengan bantuan perpustakaan Ratchet. Ratchet ialah perpustakaan WebSocket untuk PHP Ia menyediakan pelaksanaan protokol WebSocket dan boleh mencipta pelayan dan pelanggan WebSocket dengan mudah, menjadikannya mudah untuk kami membangunkan aplikasi Web masa nyata. Di bawah ialah langkah-langkah untuk membuat pelayan WebSocket menggunakan Ratchet.
Langkah 1: Pasang perpustakaan Ratchet
Anda boleh menggunakan alat Komposer untuk memasang perpustakaan Ratchet. Jalankan arahan berikut dalam terminal:
composer require cboden/ratchet
Langkah 2: Buat kelas pelayan
Dalam kelas pelayan, kita perlu mengatasi dua kaedah: onOpen dan onMessage. Kaedah onOpen dipanggil apabila sambungan diwujudkan, dan kaedah onMessage dipanggil apabila mesej diterima. Berikut ialah contoh kelas pelayan mudah:
use RatchetMessageComponentInterface; use RatchetConnectionInterface; class Chat implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { if ($client !== $from) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onError(ConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } }
Dalam contoh di atas, kami telah menentukan kelas yang dipanggil Chat, yang melaksanakan antara muka MessageComponentInterface. Dalam pembina, kami memulakan senarai sambungan $clients untuk merekod semua klien yang disambungkan. Dalam kaedah onOpen, kami menambah sambungan baharu pada senarai sambungan dan merekodkan id sumber sambungan. Dalam kaedah onMessage, kami mengulangi semua sambungan dan menghantar mesej yang diterima kepada semua pelanggan kecuali pengirim. Kaedah onClose dan onError digunakan untuk mengendalikan penutupan sambungan dan situasi ralat.
Langkah 3: Jalankan pelayan
Sebelum menjalankan pelayan, kita perlu memulakan pelayan WebSocket dalam terminal. Anda boleh membuat skrip permulaan dalam direktori projek untuk memulakan pelayan. Dalam skrip permulaan, kita perlu mencipta objek pelayan WebSocket dan kemudian menghantar contoh kelas pelayan ke objek pelayan WebSocket. Berikut ialah contoh skrip permulaan:
use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; require dirname(__DIR__) . '/vendor/autoload.php'; $server = IoServer::factory( new HttpServer( new WsServer( new Chat() ) ), 8080 ); $server->run();
Dalam contoh di atas, kami mencipta objek pelayan WebSocket $server, mendengar pada port 8080. HttpServer dan WsServer ialah dua komponen dalam perpustakaan Ratchet yang mengendalikan permintaan HTTP dan sambungan WebSocket. Kami menghantar contoh kelas Chat kepada WsServer untuk mengendalikan acara berkaitan selepas sambungan WebSocket diwujudkan. Akhir sekali, mulakan pelayan WebSocket dengan memanggil kaedah $server->run().
Selepas mencipta pelayan WebSocket menggunakan PHP, kami boleh mula membangunkan aplikasi web masa nyata. Pelayan WebSocket boleh merakam semua pelanggan yang disambungkan, dan apabila menerima mesej daripada pelanggan, siarkan mesej itu kepada semua pelanggan. Kami boleh menggunakan JavaScript untuk menulis kod pada bahagian klien, mewujudkan sambungan WebSocket, dan menghantar serta menerima data.
Berikut ialah contoh kod yang menggunakan jQuery untuk mewujudkan sambungan WebSocket:
let websocket = new WebSocket('ws://localhost:8080'); websocket.onmessage = function(event) { console.log(event.data); } $('form').submit(function(event) { event.preventDefault(); let message = $('input').val(); $('input').val(''); websocket.send(message); });
Dalam contoh di atas, kami menggunakan pembina WebSocket untuk mewujudkan sambungan WebSocket, dan alamat sambungan ialah ws ://localhost :8080. Dalam fungsi onmessage, kami mendengar acara mesej WebSocket dan mengeluarkan mesej ke konsol selepas menerimanya. Dalam acara penyerahan borang, kami mendapat teks dalam kotak input dan menghantarnya ke pelayan WebSocket.
WebSocket ialah protokol yang boleh mencapai komunikasi masa nyata dan mempunyai ciri kecekapan tinggi dan prestasi masa nyata. Dalam PHP, dengan bantuan perpustakaan Ratchet, kita boleh mencipta pelayan WebSocket dengan mudah, menjadikan pembangunan aplikasi Web masa nyata lebih mudah dan lebih cekap. Pada masa hadapan, protokol WebSocket akan menjadi bahagian penting dalam pembangunan aplikasi web masa nyata.
Atas ialah kandungan terperinci Cipta aplikasi web masa nyata menggunakan WebSockets dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!