Maison  >  Article  >  développement back-end  >  Utilisez php pour développer Websocket afin d'implémenter la fonction de chat instantané

Utilisez php pour développer Websocket afin d'implémenter la fonction de chat instantané

WBOY
WBOYoriginal
2023-12-02 13:28:091274parcourir

Utilisez php pour développer Websocket afin dimplémenter la fonction de chat instantané

Utilisez PHP pour développer Websocket afin d'implémenter la fonction de chat instantané

Websocket est un protocole de communication full-duplex, adapté aux scénarios de communication en temps réel, tels que le chat instantané, les mises à jour de données en temps réel, etc. En tant que langage de programmation côté serveur populaire, PHP peut également implémenter des fonctions Websocket via des bibliothèques et des extensions associées. Dans cet article, nous présenterons comment utiliser PHP pour développer Websocket. Les exemples de code spécifiques sont les suivants.

Tout d'abord, vous devez vous assurer que le serveur prend en charge le protocole Websocket. En PHP, vous pouvez utiliser la bibliothèque Ratchet pour implémenter un serveur Websocket. Ratchet est une bibliothèque basée sur ReactPHP qui fournit une interface de fonctionnement simple et flexible.

  1. Installez la bibliothèque Ratchet

Utilisez Composer pour installer la bibliothèque Ratchet, qui peut être exécutée dans le répertoire du projet via la commande suivante :

composer require cboden/ratchet
  1. Créez un serveur Websocket

Créez un fichier nommé server.php dans le répertoire racine du fichier projet et écrivez le code suivant :

<?php
require __DIR__.'/vendor/autoload.php';

use RatchetMessageComponentInterface;
use RatchetConnectionInterface;
use RatchetServerIoServer;
use RatchetHttpHttpServer;
use RatchetWebSocketWsServer;

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) {
        foreach ($this->clients as $client) {
            if ($client !== $from) {
                $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 occurred: {$e->getMessage()}
";
        $conn->close();
    }
}

$server = IoServer::factory(
    new HttpServer(
        new WsServer(
            new Chat()
        )
    ),
    8080
);

echo "Server running at http://localhost:8080
";

$server->run();
  1. Démarrez le serveur Websocket

Entrez le répertoire racine du projet sur la ligne de commande et exécutez la commande suivante pour démarrer le serveur Websocket :

php -f server.php

À ce stade , le serveur Websocket a été démarré et écoute sur le port 8080. Il est accessible via http://localhost:8080.

  1. Écriture de la page front-end

Créez un fichier nommé index.html dans le répertoire du projet et écrivez le code suivant :

<!DOCTYPE html>
<html>
<head>
    <title>Websocket Chat</title>
    <script>
        var socket = new WebSocket("ws://localhost:8080");

        socket.onopen = function(event) {
            console.log("Socket opened");
        };

        socket.onmessage = function(event) {
            console.log("Message received: " + event.data);
        };

        socket.onclose = function(event) {
            console.log("Socket closed");
        };

        function sendMessage() {
            var message = document.getElementById("message").value;
            socket.send(message);
        }
    </script>
</head>
<body>
    <input type="text" id="message" placeholder="Type a message">
    <button onclick="sendMessage()">Send</button>
</body>
</html>

Ouvrez le fichier index.html dans le navigateur et vous verrez un fichier pour envoyer des messages zones de saisie et boutons. Saisissez le message dans la zone de saisie et cliquez sur le bouton Envoyer pour envoyer le message au serveur.

  1. Testez le programme

Ouvrez plusieurs fenêtres ou onglets du navigateur, saisissez respectivement différents messages et cliquez sur le bouton d'envoi. Vous constaterez que le message sera diffusé à tous les clients connectés.

À ce stade, nous avons développé avec succès un simple serveur Websocket utilisant PHP pour implémenter la fonction de chat instantané. Grâce à l'encapsulation de la bibliothèque Ratchet, nous pouvons rapidement implémenter des applications Websocket complexes. J'espère que cet article vous sera utile et je vous souhaite une bonne programmation !

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