Maison  >  Article  >  développement back-end  >  Exemples de développement PHP WebSocket : cas pratiques d'implémentation de fonctions spécifiques

Exemples de développement PHP WebSocket : cas pratiques d'implémentation de fonctions spécifiques

WBOY
WBOYoriginal
2023-09-11 12:21:271342parcourir

PHP WebSocket开发实例:如何实现特定功能的实用案例

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. Introduction
    WebSocket est un protocole qui établit une longue connexion entre le client et le serveur, permettant une communication bidirectionnelle en temps réel. Différent du modèle de requête-réponse HTTP traditionnel, la connexion WebSocket établit un canal de communication persistant entre le client et le serveur, permettant au serveur de transmettre activement des données au client.
  2. Cas pratique : Chat en ligne
    Le chat en ligne est l'une des applications les plus courantes de WebSocket. Les utilisateurs peuvent accéder à la page du salon de discussion via un navigateur pour communiquer avec d'autres utilisateurs en ligne en temps réel. Ci-dessous, nous utilisons un cas pratique pour présenter comment utiliser PHP WebSocket pour implémenter un salon de discussion en ligne simple.

(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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn