Maison  >  Article  >  cadre php  >  Application pratique de Workerman : créer un salon de discussion en ligne performant

Application pratique de Workerman : créer un salon de discussion en ligne performant

WBOY
WBOYoriginal
2023-08-06 12:29:061422parcourir

Application pratique Workerman : créez une salle de discussion en ligne haute performance

Introduction :
À l'ère d'Internet d'aujourd'hui, le chat en ligne en temps réel est devenu un élément indispensable de la vie des gens. Afin de répondre aux besoins des utilisateurs en matière d'interaction performante et en temps réel, il devient crucial de choisir un cadre de communication approprié. Workerman, en tant que framework de communication réseau asynchrone PHP hautes performances, peut répondre à cette demande. Cet article explique comment utiliser Workerman pour créer une salle de discussion en ligne hautes performances et fournit des exemples de code.

1. Préparation de l'environnement
Avant de commencer, assurez-vous que votre environnement remplit les conditions suivantes :

  1. La version PHP ne doit pas être inférieure à 5.3 et les extensions pcntl et posix doivent être installées.
  2. Installez Composer, qui est utilisé pour installer Workerman et ses fichiers de bibliothèque dépendants.

2. Créer un serveur de salle de discussion
Tout d'abord, nous devons créer un serveur de salle de discussion. Créez un fichier nommé "chat_server.php" et ajoutez le code suivant :

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

use WorkermanWorker;

$ws_worker = new Worker("websocket://0.0.0.0:8000");

$ws_worker->count = 4; // 设置启动4个进程

$ws_worker->onConnect = function ($connection) {
    echo "有新用户连接
";
};

$ws_worker->onMessage = function ($connection, $data) use ($ws_worker) {
    foreach ($ws_worker->connections as $clientConnection) {
        $clientConnection->send($data); // 将收到的消息发送给所有连接的客户端
    }
};

$ws_worker->onClose = function ($connection) {
    echo "有用户断开连接
";
};

Worker::runAll();

Avec le code ci-dessus, nous avons créé un serveur WebSocket et écouté le port 8000. Lorsqu'un nouvel utilisateur se connecte, « Un nouvel utilisateur se connecte » est affiché en arrière-plan. Lorsqu'un utilisateur se déconnecte, « Un utilisateur se déconnecte » est affiché en arrière-plan. Dans la fonction de rappel onMessage, nous envoyons le message reçu à tous les clients connectés.

3. Créer un client de salle de discussion
Ensuite, nous devons créer un client de salle de discussion simple. Créez un fichier nommé "chat_client.html" et ajoutez le code suivant :

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>在线聊天室</title>
    <style>
        #message {
            height: 500px;
            border: 1px solid #ccc;
            padding: 10px;
            overflow-y: scroll;
        }

        #message p {
            margin: 5px 0;
        }

        #input {
            margin-top: 10px;
        }
    </style>
</head>
<body>
<div id="message"></div>
<input type="text" id="input" placeholder="请输入消息">
<button onclick="send()">发送</button>

<script>
    var ws = new WebSocket("ws://localhost:8000");

    ws.onopen = function () {
        console.log("连接成功");
    };

    ws.onmessage = function (evt) {
        var message = document.getElementById("message");
        message.innerHTML += "<p>" + evt.data + "</p>";
        message.scrollTop = message.scrollHeight; // 滚动到底部
    };

    ws.onclose = function () {
        console.log("连接关闭");
    };

    function send() {
        var input = document.getElementById("input");
        var message = input.value;
        ws.send(message);
        input.value = "";
    }
</script>
</body>
</html>

Avec le code ci-dessus, nous avons créé une interface client de salle de discussion simple. Lorsque l'utilisateur saisit un message et clique sur le bouton d'envoi, le message est envoyé au serveur. Lorsque le serveur reçoit un message, le message est affiché dans la zone de message dans la fonction de rappel onmessage et défile automatiquement vers le bas.

4. Testez la salle de discussion
Exécutez la commande suivante dans la ligne de commande pour démarrer le serveur :

php chat_server.php start

Ensuite, ouvrez deux ou plusieurs fenêtres de navigateur et accédez respectivement au fichier "chat_client.html". Entrez le message dans la zone de saisie des différentes fenêtres du navigateur, cliquez sur le bouton Envoyer et vous verrez le même message dans toutes les fenêtres. Nous avons ainsi réussi à créer un salon de discussion en ligne performant.

Résumé :
Cet article explique comment utiliser Workerman pour créer une salle de discussion en ligne hautes performances et fournit des exemples de code correspondants. En utilisant Workerman, nous pouvons facilement mettre en œuvre des fonctions de chat en temps réel à haute concurrence et à faible latence. J'espère que cet article sera utile à l'application pratique de Workerman.

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