Rumah >pembangunan bahagian belakang >tutorial php >Contoh pembangunan PHP WebSocket: demonstrasi cara melaksanakan fungsi tertentu
PHP WebSocket Development Contoh: Demonstrasi cara melaksanakan fungsi tertentu
WebSocket ialah protokol untuk komunikasi dua hala masa nyata, yang memungkinkan untuk mewujudkan sambungan berterusan antara pelanggan dan pelayan. WebSocket ialah alat yang berkuasa untuk aplikasi web yang perlu melaksanakan fungsi masa nyata atau komunikasi segera. Dalam artikel ini, kami akan menunjukkan cara menggunakan pembangunan WebSocket PHP dan melaksanakan fungsi tertentu.
Buat Pelayan WebSocket
Pertama, kita perlu mencipta pelayan WebSocket. Dalam PHP, kita boleh menggunakan perpustakaan Ratchet untuk melaksanakan pelayan WebSocket. Mula-mula, pasang perpustakaan Ratchet melalui Komposer:
composer require cboden/ratchet
Kemudian, cipta fail server.php
yang mentakrifkan pelayan WebSocket kami: server.php
文件,用于定义我们的WebSocket服务器:
<?php require __DIR__ . '/vendor/autoload.php'; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; class MyWebSocketServer implements RatchetMessageComponentInterface { // 实现WebSocket服务器的方法 } $server = IoServer::factory( new HttpServer( new WsServer( new MyWebSocketServer() ) ), 8080 ); $server->run();
在这个例子中,我们创建了一个名为MyWebSocketServer
的类,来实现WebSocket服务器的接口方法。这个类将会处理接收到的消息、连接和关闭事件等。
在MyWebSocketServer
类中,我们添加以下方法来处理消息、连接和关闭事件:
class MyWebSocketServer implements RatchetMessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage(); } public function onOpen(RatchetConnectionInterface $conn) { $this->clients->attach($conn); echo "New connection! ({$conn->resourceId}) "; } public function onClose(RatchetConnectionInterface $conn) { $this->clients->detach($conn); echo "Connection {$conn->resourceId} has disconnected "; } public function onMessage(RatchetConnectionInterface $from, $msg) { foreach ($this->clients as $client) { $client->send($msg); } } public function onError(RatchetConnectionInterface $conn, Exception $e) { echo "An error has occurred: {$e->getMessage()} "; $conn->close(); } }
在上述代码中,我们使用SplObjectStorage
来存储所有连接到服务器的客户端。当有新的连接时,我们将其保存到$clients
中,并打印出新连接的资源ID。当连接关闭时,我们从$clients
中移除断开连接的客户端,并打印出其资源ID。当收到消息时,我们遍历所有连接的客户端,并将消息发送给每个客户端。
运行服务器
现在,我们已经准备好了WebSocket服务器和服务逻辑。我们可以通过运行以下命令来启动服务器:
php server.php
服务器将会监听8080端口,并开始接收和处理客户端的连接、消息和关闭事件。
var socket = new WebSocket("ws://localhost:8080"); socket.onopen = function() { console.log("Connected to server"); }; socket.onmessage = function(event) { console.log("Received message: " + event.data); }; socket.onclose = function() { console.log("Server connection closed"); }; // 发送消息 function sendMessage(message) { socket.send(message); }
通过上述代码,我们可以连接到我们的WebSocket服务器,并通过调用sendMessage
rrreee
MyWebSocketServer
, kami menambah kaedah berikut untuk mengendalikan mesej, sambungan dan acara tutup: rrreee
Dalam kod di atas, kami menggunakanSplObjectStorage
untuk menyimpan semua sambungan klien ke pelayan. Apabila terdapat sambungan baharu, kami menyimpannya ke $clients
dan mencetak ID sumber sambungan baharu itu. Apabila sambungan ditutup, kami mengalih keluar klien yang terputus daripada $clients
dan mencetak ID sumbernya. Apabila mesej diterima, kami mengulangi semua pelanggan yang bersambung dan menghantar mesej itu kepada setiap pelanggan. 🎜sendMessage
. Apabila mesej diterima, kandungan mesej dicetak dalam konsol penyemak imbas. 🎜🎜🎜Menjalankan Ujian🎜Kini, kami telah menyelesaikan pelaksanaan pelayan dan pelanggan. Kami boleh membuka klien dalam berbilang tetingkap penyemak imbas, menyambung ke pelayan dan melakukan ujian. Apabila seorang pelanggan menghantar mesej, pelanggan lain akan menerima mesej dan mencetaknya dalam konsol. 🎜🎜🎜Melalui contoh ini, kami menunjukkan cara menggunakan pembangunan WebSocket PHP dan melaksanakan fungsi bilik sembang yang mudah. Sudah tentu, WebSocket mempunyai rangkaian penggunaan yang lebih luas dalam aplikasi praktikal, dan anda boleh melaksanakan fungsi yang lebih kompleks mengikut keperluan anda sendiri. 🎜🎜Ringkasnya, artikel ini menunjukkan cara menggunakan pembangunan WebSocket PHP untuk mencapai demonstrasi fungsi tertentu. Saya harap contoh ini akan membantu anda memahami dan mempelajari pembangunan PHP WebSocket. 🎜Atas ialah kandungan terperinci Contoh pembangunan PHP WebSocket: demonstrasi cara melaksanakan fungsi tertentu. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!