Maison >développement back-end >tutoriel php >Comment PHP et Swoole implémentent-ils la communication WebSocket ?

Comment PHP et Swoole implémentent-ils la communication WebSocket ?

WBOY
WBOYoriginal
2023-07-21 14:01:071042parcourir

Comment PHP et Swoole implémentent-ils la communication WebSocket ?

WebSocket est un protocole de communication full-duplex sur le réseau. Il peut établir une longue connexion entre le client et le serveur pour réaliser une communication en temps réel. En tant que langage de développement Web populaire, PHP peut facilement implémenter la communication WebSocket lorsqu'il est combiné avec l'extension swoole. Cet article présentera comment PHP et swoole implémentent la communication WebSocket et fournira des exemples de code pour référence.

Tout d’abord, assurez-vous que l’extension swoole est installée sur votre serveur. L'extension swoole peut être installée via la commande suivante :

pecl install swoole

Une fois l'installation terminée, introduisez l'extension swoole dans votre code PHP via :

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

Ensuite, créez une instance de serveur WebSocket et configurez une configuration de base :

<?php
    $server = new SwooleWebsocketServer('127.0.0.1', 9502);

    $server->set([
        'worker_num' => 1,
        'daemonize' => false,
        'log_level' => SWOOLE_LOG_INFO,
        'log_file' => '/path/to/websocket.log',
    ]);

Dans le code ci-dessus, nous créons une instance de serveur WebSocket et définissons l'adresse d'écoute et le port du serveur. Dans le même temps, nous pouvons également définir d'autres configurations du serveur, telles que le nombre de processus de travail, l'exécution ou non de démons, les niveaux de journalisation, etc.

Ensuite, nous devons écouter les événements de connexion et de message de WebSocket pour gérer les connexions et les messages des clients :

<?php
    $server->on('open', function ($server, $request) {
        echo "New WebSocket connection: fd {$request->fd}
";
    });

    $server->on('message', function ($server, $frame) {
        echo "Received message: {$frame->data}
";

        // 处理消息...

        // 回复消息给客户端
        $server->push($frame->fd, 'Hello, client!');
    });

Dans le code ci-dessus, nous utilisons la méthode on pour écouter l'événement de connexion ouverte de WebSocket et recevoir l'événement de message. Dans l'événement de connexion ouverte, nous pouvons obtenir les informations de connexion du client, telles que les descripteurs de fichiers. Dans l'événement de réception de message, nous pouvons traiter le message envoyé par le client et renvoyer le contenu correspondant.

Enfin, démarrez le serveur WebSocket et écoutez les requêtes :

<?php
    $server->start();

Avec le code ci-dessus, nous pouvons démarrer le serveur WebSocket et commencer à écouter les requêtes des clients.

Bien sûr, en plus de l'exemple de code ci-dessus, vous pouvez également encoder et décoder librement la communication WebSocket et d'autres opérations en fonction de vos besoins spécifiques. L'extension swoole offre une multitude de fonctions et de méthodes, et une documentation détaillée peut être consultée sur le site officiel.

Résumé : Cet article explique comment utiliser PHP et l'extension swoole pour implémenter la communication WebSocket. En créant une instance de serveur WebSocket, en écoutant les événements de connexion et de message et en traitant les opérations correspondantes, nous pouvons facilement implémenter des fonctions de communication en temps réel. J'espère que cet article vous aidera à comprendre et à utiliser la communication 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