Maison  >  Article  >  cadre php  >  Comment utiliser Swoole pour implémenter la communication WebSocket

Comment utiliser Swoole pour implémenter la communication WebSocket

王林
王林original
2023-11-07 12:56:15673parcourir

Comment utiliser Swoole pour implémenter la communication WebSocket

Swoole est un framework réseau de coroutine PHP hautes performances qui prend en charge les E/S asynchrones, les multi-processus, les multi-threads, la coroutine et d'autres fonctionnalités. Parmi eux, le composant WebSocket fourni par Swoole peut être utilisé pour réaliser une communication bidirectionnelle en temps réel et constitue un choix idéal pour créer des applications en temps réel. Cet article explique comment utiliser Swoole pour implémenter la communication WebSocket et fournit des exemples de code spécifiques.

1. Préparation de l'environnement

Avant d'utiliser Swoole pour implémenter la communication WebSocket, vous devez vous assurer que l'extension Swoole a été installée. Il peut être installé via la commande suivante :

pecl install swoole

ou téléchargez la version du code source depuis le référentiel officiel GitHub.

2. Créez un serveur WebSocket

Introduisez le composant WebSocket de Swoole dans le code, créez un serveur WebSocket et surveillez la connexion avec le client. Le code est le suivant :

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 启动服务器
$server->start();

Le code ci-dessus crée un serveur WebSocket en écoute sur le port 9501, et imprime le descripteur de fichier (fd) du client connecté lorsque la connexion est établie.

3. Traitement des messages WebSocket

Lorsque le serveur WebSocket établit une connexion avec le client, celui-ci peut envoyer des messages au serveur. Le serveur doit écouter les événements de message avec le client et les traiter. Le processus de traitement des messages WebSocket est similaire à celui des requêtes HTTP. Le contenu du message peut être obtenu en analysant l'en-tête du message et en obtenant le corps du message. Le code est le suivant :

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

Le code ci-dessus écoute l'événement de message WebSocket et imprime le contenu du message lorsque le message est reçu.

4. Envoyer un message au client WebSocket

Pour envoyer un message au client dans le serveur WebSocket, vous devez utiliser la méthode push du serveur. Cette méthode accepte le descripteur de fichier du client et le contenu du message à envoyer. Le code est le suivant :

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

Le code ci-dessus répond à un message au client lors du traitement des messages WebSocket.

5. Exemple de code complet

use SwooleWebSocketServer;

// 创建WebSocket服务器
$server = new Server('0.0.0.0', 9501);

// 监听WebSocket连接事件
$server->on('open', function (Server $server, $request) {
    echo "Client {$request->fd} connected
";
});

// 监听WebSocket消息事件
$server->on('message', function (Server $server, $frame) {
    echo "Received message: {$frame->data}
";
    
    // 向客户端发送消息
    $server->push($frame->fd, 'Server received message: '.$frame->data);
});

// 启动服务器
$server->start();

6. Client WebSocket

Après avoir terminé la construction du serveur WebSocket, nous devons utiliser le client WebSocket pour envoyer des messages au serveur et recevoir des réponses du serveur. Voici un exemple de code pour un client WebSocket :

// 创建WebSocket连接
const ws = new WebSocket('ws://localhost:9501');

// 监听WebSocket连接事件
ws.addEventListener('open', function (event) {
    console.log('Connected to WebSocket server');
    
    // 发送消息
    ws.send('Hello, Swoole WebSocket');
});

// 监听WebSocket消息事件
ws.addEventListener('message', function (event) {
    console.log('Received message:', event.data);
});

Le code ci-dessus utilise JavaScript pour créer une connexion WebSocket et envoie un message au serveur WebSocket une fois la connexion établie. Lorsque le message est traité par le serveur, le serveur renvoie un message de réponse au client, et le client peut recevoir le message de réponse en écoutant l'événement de message.

7. Résumé

Cet article présente comment utiliser Swoole pour implémenter la communication WebSocket et montre la méthode de création d'un serveur WebSocket, de traitement des messages et d'envoi de messages au client à travers des exemples de code. Grâce au composant WebSocket de Swoole, vous pouvez facilement créer des applications de communication bidirectionnelle en temps réel.

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