Avec le développement de la technologie Internet, de plus en plus de sites Web et d'applications commencent à se concentrer sur la réalisation de communications en temps réel. Le protocole WebSocket est considéré comme un moyen efficace d'établir une communication en temps réel. Cet article expliquera comment utiliser PHP et WebSocket pour implémenter des fonctions de communication en temps réel.
WebSocket est un protocole basé sur TCP qui peut établir une connexion persistante entre le navigateur et le serveur pour établir une communication bidirectionnelle en temps réel. Contrairement au protocole HTTP, le protocole WebSocket est un protocole full-duplex. Il ne nécessite pas que le navigateur envoie une requête pour recevoir la réponse du serveur, mais peut communiquer directement dans les deux sens.
Étant donné que WebSocket utilise une méthode de connexion longue, cela peut considérablement améliorer l'efficacité de la transmission des données et réduire la charge sur le serveur. Dans les scénarios de communication en temps réel, WebSocket est devenu une technologie indispensable.
PHP, en tant que langage côté serveur, possède également certains frameworks qui prennent en charge WebSocket. Parmi les plus connus figurent le framework Rachet, le framework swoole, etc.
Dans cet article, nous utilisons le framework Rachet pour implémenter des fonctions de communication en temps réel. Le framework Rachet est un framework open source pour PHP. Il fournit une implémentation côté serveur de WebSocket et peut prendre en charge une variété de serveurs Web, tels qu'Apache, Nginx, etc.
Utilisez Composer pour installer le framework Rachet :
composer require cboden/ratchet
Ce qui suit est un code PHP simple qui utilise le framework Rachet pour établir une communication en temps réel :
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; require 'vendor/autoload.php'; class MyChat 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 ($from !== $client) { $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(); } } $server = IoServer::factory( new HttpServer( new WsServer( new MyChat() ) ), 8080 ); $server->run();
Le code définit une classe nommée MyChat, qui implémente l'interface MessageComponentInterface du framework Ratchet. Il contient les 4 méthodes suivantes :
onOpen()
est appelée lorsqu'une nouvelle connexion est établie. onOpen()
当有新的连接建立时被调用。onMessage()
当代码接收到消息时被调用。onClose()
当连接被关闭时被调用。onError()
当出现错误时被调用。其中,onOpen()
方法记录了新连接建立的信息,onMessage()
方法将接收到的消息广播给所有连接的客户端,而onClose()
方法记录连接关闭的信息。
最后,代码通过IoServer::factory()
onMessage()
Appelé lorsque le code reçoit un message.
onClose()
Appelé lorsque la connexion est fermée. onError()
Appelé lorsqu'une erreur se produit. onOpen()
enregistre les informations établies par la nouvelle connexion, et la méthode onMessage()
diffuse le message reçu à tous les clients connectés, et la méthode onClose()
enregistre les informations de fermeture de connexion. Enfin, le code utilise IoServer::factory()
pour créer le serveur et activer la surveillance. 3. Test Démarrez le serveur en ligne de commande : php chat-server.php
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!