Rumah > Artikel > pembangunan bahagian belakang > Sembang kumpulan dan fungsi sembang peribadi sistem sembang masa nyata berdasarkan PHP
Fungsi sembang kumpulan dan sembang peribadi sistem sembang masa nyata berasaskan PHP
Dengan perkembangan Internet, sistem sembang masa nyata menjadi semakin penting dalam kehidupan seharian kita. Sama ada anda berbual dengan rakan di platform media sosial atau berkomunikasi dengan rakan sekerja di tempat kerja, sistem sembang langsung memainkan peranan penting. Artikel ini akan memperkenalkan cara menggunakan PHP untuk membangunkan sistem berasaskan sembang masa nyata yang menyokong sembang kumpulan dan fungsi sembang peribadi.
Pertama, kita perlu menyediakan pelayan untuk mengendalikan permintaan sembang masa nyata. Kami menggunakan PHP dan WebSocket untuk melaksanakan fungsi ini. WebSocket ialah protokol berasaskan TCP yang membenarkan komunikasi dupleks penuh antara penyemak imbas dan pelayan. Dalam PHP, kita boleh menggunakan perpustakaan Ratchet untuk mencipta pelayan WebSocket.
Pertama, kita perlu memasang perpustakaan Ratchet. Jalankan arahan berikut dalam terminal:
composer require cboden/ratchet
Selepas pemasangan selesai, kita boleh mencipta fail bernama server.php
dan menulis kod berikut di dalamnya: server.php
的文件,并在其中编写以下代码:
<?php require 'vendor/autoload.php'; use RatchetMessageComponentInterface; use RatchetConnectionInterface; use RatchetWebSocketWsServer; use RatchetHttpHttpServer; use RatchetServerIoServer; use RatchetWampWampServerProtocol; 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) { // 处理客户端发送的消息 $data = json_decode($msg); $type = $data->type; switch ($type) { case 'register': $from->username = $data->username; echo "User registered: " . $from->username . " "; break; case 'group': $message = $data->message; $this->broadcastMessage($from, $message); break; case 'private': $recipient = $data->recipient; $message = $data->message; $this->sendPrivateMessage($from, $recipient, $message); break; } } 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(); } public function broadcastMessage($from, $message) { foreach ($this->clients as $client) { if ($client !== $from) { $client->send($message); } } } public function sendPrivateMessage($from, $recipient, $message) { foreach ($this->clients as $client) { if ($client->username == $recipient) { $client->send($message); $from->send($message); break; } } } } $server = IoServer::factory( new HttpServer( new WsServer( new Chat() ) ), 8080 ); $server->run();
在上述代码中,我们创建了一个名为Chat
的类来处理连接、发送消息和关闭连接等操作。在onMessage
方法中,我们根据消息类型来执行不同的操作。如果类型是register
,表示有用户注册连接;如果类型是group
,表示有用户发送群组消息;如果类型是private
,表示有用户发送私聊消息。我们使用broadcastMessage
方法来广播群组消息,使用sendPrivateMessage
方法来发送私聊消息。
接下来,我们可以创建一个名为index.html
的文件,并在其中编写以下代码:
<!DOCTYPE html> <html> <head> <title>Chat</title> </head> <body> <input type="text" id="username" placeholder="Username"><br> <input type="text" id="message" placeholder="Message"><br> <button onclick="register()">Register</button> <button onclick="sendGroupMessage()">Send Group Message</button> <button onclick="sendPrivateMessage()">Send Private Message</button> <script> var conn = new WebSocket('ws://localhost:8080'); conn.onopen = function(e) { console.log("Connection established!"); }; conn.onmessage = function(e) { var chatbox = document.getElementById("chatbox"); chatbox.innerHTML += e.data + "<br>"; }; function register() { var username = document.getElementById("username").value; var data = { type: 'register', username: username }; conn.send(JSON.stringify(data)); } function sendGroupMessage() { var message = document.getElementById("message").value; var data = { type: 'group', message: message }; conn.send(JSON.stringify(data)); } function sendPrivateMessage() { var recipient = document.getElementById("username").value; var message = document.getElementById("message").value; var data = { type: 'private', recipient: recipient, message: message }; conn.send(JSON.stringify(data)); } </script> </body> </html>
在上述代码中,我们创建了一个WebSocket连接并注册了连接的回调函数。在register
函数中,我们将用户名发送到服务器以进行注册。在sendGroupMessage
函数中,我们将群组消息发送到服务器,服务器会将消息广播给所有用户。在sendPrivateMessage
函数中,我们将私聊消息发送给指定用户。
现在,我们可以在终端中运行php server.php
命令来启动服务器。然后,我们可以在浏览器中打开index.html
rrreee
Sembang
dicipta untuk mengendalikan operasi seperti menyambung, menghantar mesej dan menutup sambungan. Dalam kaedah onMessage
, kami melakukan operasi yang berbeza berdasarkan jenis mesej. Jika jenisnya ialah register
, ini bermakna pengguna telah mendaftarkan sambungan jika jenisnya ialah group
, ini bermakna pengguna telah menghantar mesej kumpulan; adalah pribadi
, Menunjukkan bahawa pengguna telah menghantar mesej peribadi. Kami menggunakan kaedah broadcastMessage
untuk menyiarkan mesej kumpulan dan kaedah sendPrivateMessage
untuk menghantar mesej peribadi.
Seterusnya, kita boleh mencipta fail yang dipanggil index.html
dan menulis kod berikut di dalamnya:
register
, kami menghantar nama pengguna ke pelayan untuk pendaftaran. Dalam fungsi sendGroupMessage
, kami menghantar mesej kumpulan ke pelayan, dan pelayan akan menyiarkan mesej itu kepada semua pengguna. Dalam fungsi sendPrivateMessage
, kami menghantar mesej peribadi kepada pengguna yang ditentukan. 🎜🎜Kini, kita boleh menjalankan perintah php server.php
dalam terminal untuk memulakan pelayan. Kemudian, kita boleh membuka fail index.html
dalam penyemak imbas, masukkan nama pengguna dan klik butang pendaftaran. Seterusnya, kita boleh memasukkan mesej dan klik butang hantar untuk mengadakan sembang kumpulan atau sembang peribadi. Pelayan menyiarkan mesej yang sepadan kepada pengguna lain atau menghantarnya kepada pengguna tertentu. 🎜🎜Ringkasan: 🎜Artikel ini memperkenalkan cara menggunakan PHP dan WebSocket untuk membangunkan sistem sembang masa nyata dan melaksanakan sembang kumpulan dan fungsi sembang peribadi. Dengan mencipta pelayan WebSocket dan berkomunikasi dengannya, kami boleh mendapatkan dan menghantar mesej daripada pengguna lain dalam masa nyata. Dengan contoh kod mudah, kami melaksanakan sistem sembang masa nyata asas. Dengan memanjangkan kod, kami boleh melaksanakan lebih banyak fungsi, seperti menambah pengesahan pengguna, storan rekod sembang, dsb. 🎜Atas ialah kandungan terperinci Sembang kumpulan dan fungsi sembang peribadi sistem sembang masa nyata berdasarkan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!