Exemples de développement PHP WebSocket : cas pratiques d'implémentation de fonctions spécifiques
Introduction :
Avec le développement d'Internet, le protocole HTTP traditionnel présente certaines limites dans la communication en temps réel. WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui permet de réaliser une communication en temps réel entre le client et le serveur. Cet article utilisera un cas pratique pour présenter comment utiliser PHP WebSocket pour implémenter des fonctions spécifiques.
(1) Établir un serveur WebSocket
Tout d'abord, nous devons créer un serveur WebSocket. Vous pouvez utiliser l'extension swoole de PHP pour créer un serveur WebSocket. Swoole est une extension PHP hautes performances qui prend en charge WebSocket. Nous pouvons créer un serveur WebSocket en exécutant le code suivant :
<?php $server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('open', function ($server, $request) { echo "new connection open: ".$request->fd; }); $server->on('message', function ($server, $frame) { echo "received message: ".$frame->data; }); $server->on('close', function ($ser, $fd) { echo "connection close: ".$fd; }); $server->start(); ?>
Dans ce code, nous créons un serveur WebSocket avec une adresse IP d'écoute de 0.0.0.0 et un numéro de port de 9501. Lorsqu'une nouvelle connexion est établie, le serveur appellera automatiquement la fonction de gestionnaire d'événements open
事件处理函数;当接收到客户端发送过来的消息时,服务器会调用message
事件处理函数;而当连接关闭时,服务器会调用close
.
(2) Développement de page front-end
Ensuite, nous devons développer une page front-end pour afficher l'interface du salon de discussion et communiquer avec le serveur. Ce qui suit est un simple code de page frontale :
<!DOCTYPE html> <html> <head> <title>WebSocket Chat Room</title> <script> var socket = new WebSocket("ws://localhost:9501"); socket.onopen = function(event) { console.log("WebSocket connection open"); }; socket.onmessage = function(event) { console.log("Received message: " + event.data); }; socket.onclose = function(event) { console.log("WebSocket connection closed"); }; </script> </head> <body> <h1>WebSocket Chat Room</h1> <div id="chat-messages"></div> <input type="text" id="input-message"> <button onclick="sendMessage()">Send</button> <script> function sendMessage() { var message = document.getElementById("input-message").value; socket.send(message); } </script> </body> </html>
Ce code se connecte au serveur via WebSocket et définit les fonctions de traitement pour ouvrir la connexion, recevoir des messages et fermer la connexion. Grâce à des boutons et des zones de texte, les utilisateurs peuvent saisir le contenu du chat et l'envoyer au serveur.
(3) Implémentation de la fonction de salon de discussion
Côté serveur, nous devons ajouter une certaine logique pour implémenter la fonction de salon de discussion. Modifiez le code du serveur comme suit :
<?php $server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('open', function ($server, $request) { echo "new connection open: ".$request->fd." "; }); $server->on('message', function ($server, $frame) { echo "received message: ".$frame->data." "; // 广播消息给所有客户端 foreach ($server->connections as $fd) { $server->push($fd, $frame->data); } }); $server->on('close', function ($ser, $fd) { echo "connection close: ".$fd." "; }); $server->start(); ?>
Dans le code modifié, lors de la réception d'un message du client, le serveur diffusera le message à tous les clients connectés. De cette manière, tous les messages envoyés par les utilisateurs sur la page du salon de discussion seront affichés sur les pages des autres utilisateurs en temps réel.
Résumé :
Grâce aux cas pratiques ci-dessus, nous avons appris à utiliser PHP WebSocket pour implémenter un salon de discussion en ligne simple. Avec l'aide de l'extension swoole de PHP, nous pouvons facilement construire un serveur basé sur WebSocket pour réaliser des fonctions de communication en temps réel. De plus, WebSocket peut être utilisé dans davantage de scénarios, tels que l'affichage de données en temps réel, l'édition collaborative à plusieurs personnes, etc. J'espère que cet article sera utile pour comprendre et appliquer PHP WebSocket.
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!