Maison > cadre php > PensezPHP > le corps du texte

Comment utiliser WebSocket pour la communication en temps réel dans ThinkPHP6 ?

WBOY
Libérer: 2023-06-12 10:40:39
original
2040 Les gens l'ont consulté

WebSocket est un protocole de communication full-duplex qui peut établir une connexion en temps réel entre le serveur et le client pour établir une communication en temps réel. Dans le développement Web, le framework PHP couramment utilisé est ThinkPHP. Alors, comment utiliser WebSocket pour la communication en temps réel dans ThinkPHP6 ?

  1. Installer l'extension swoole

Vous devez d'abord installer l'extension swoole sur le serveur, vous pouvez utiliser la commande composer pour l'installer : # 🎜🎜#

composer require swoole/swoole
Copier après la connexion
#🎜 🎜#Remarque : L'utilisation de l'extension swoole nécessite une version PHP >=7.0.

Créer un service WebSocket
  1. Dans ThinkPHP6, vous pouvez créer un service WebSocket via des commandes personnalisées. Ouvrez l'outil de ligne de commande, entrez dans le répertoire racine du projet et exécutez la commande suivante :
php think make:command WebSocket
Copier après la connexion

Après avoir exécuté la commande, le fichier WebSocket.php sera généré dans le répertoire app/command. Dans le fichier, ajoutez le code suivant :

<?php
namespace appcommand;

use swoole_websocket_server;
use swoole_http_request;
use thinkconsoleCommand;
use thinkconsoleInput;
use thinkconsoleOutput;

class WebSocket extends Command
{
    protected function configure()
    {
        // 给命令起一个名字
        $this->setName('swoole:websocket')
            ->setDescription('Start websocket server');
    }

    protected function execute(Input $input, Output $output)
    {
        $server = new swoole_websocket_server("0.0.0.0", 9501);

        // 监听WebSocket连接打开事件
        $server->on('open', function (swoole_websocket_server $server, swoole_http_request $request) {
            echo "connection open: {$request->fd}
";
        });

        // 监听WebSocket消息事件
        $server->on('message', function (swoole_websocket_server $server, $frame) {
            echo "received message: {$frame->data}
";

            // 广播消息给所有连接的客户端
            $server->push($frame->fd, "this is server");
        });

        // 监听WebSocket连接关闭事件
        $server->on('close', function ($ser, $fd) {
            echo "connection close: {$fd}
";
        });

        $server->start();
    }
}
Copier après la connexion

Exécutez la commande suivante pour démarrer le service WebSocket :

php think swoole:websocket
Copier après la connexion

Utiliser WebSocket dans la vue
  1. Dans la vue, vous pouvez utiliser l'API WebSocket de JavaScript pour communiquer avec le serveur en temps réel. Par exemple :
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>WebSocket</title>
</head>
<body>
    <script>
        var ws = new WebSocket('ws://localhost:9501');

        ws.onopen = function(){
            console.log('WebSocket open');
        };

        ws.onmessage = function(ev){
            console.log('WebSocket message: ' + ev.data);
        };

        ws.onclose = function(){
            console.log('WebSocket close');
        };
    </script>
</body>
</html>
Copier après la connexion

Le code ci-dessus crée une instance WebSocket et se connecte au service WebSocket local. Lorsque le serveur envoie un message, la fonction onmessage est appelée pour le traitement. Vous pouvez envoyer des messages au serveur en appelant la fonction d'envoi de l'instance.

À ce stade, le service WebSocket a été créé avec succès et a établi une connexion de communication en temps réel avec le front-end.

Summary

Dans ThinkPHP6, avec l'aide de l'extension swoole, la fonction de communication en temps réel de WebSocket peut être facilement implémentée. En activant le service WebSocket via des commandes personnalisées et en le combinant avec l'API JavaScript WebSocket, une communication en temps réel peut être réalisée dans les applications Web pour répondre à une variété de besoins commerciaux.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal