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

Comment utiliser Swoole pour implémenter la communication WebSocket

Nov 07, 2023 pm 12:56 PM
websocket 通信 swoole

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
Copier après la connexion

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();
Copier après la connexion

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}
";
});
Copier après la connexion

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);
});
Copier après la connexion

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();
Copier après la connexion

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);
});
Copier après la connexion

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Nouvelle génération de technologie haut débit par fibre optique - 50G PON Nouvelle génération de technologie haut débit par fibre optique - 50G PON Apr 20, 2024 pm 09:22 PM

Dans l'article précédent (lien), Xiao Zaojun a présenté l'historique du développement de la technologie haut débit, du RNIS, du xDSL au 10GPON. Aujourd'hui, parlons de la nouvelle génération à venir de technologie haut débit par fibre optique-50GPON. █F5G et F5G-A Avant de présenter 50GPON, parlons d'abord de F5G et F5G-A. En février 2020, l'ETSI (European Telecommunications Standards Institute) a promu un système technologique de réseau de communication fixe basé sur 10GPON+FTTR, Wi-Fi6, transmission/agrégation optique 200G, OXC et d'autres technologies, et l'a nommé F5G. technologie de communication en réseau (The5thGenerationFixednetworks). F5G est un réseau fixe

PHP et WebSocket : bonnes pratiques pour le transfert de données en temps réel PHP et WebSocket : bonnes pratiques pour le transfert de données en temps réel Dec 18, 2023 pm 02:10 PM

PHP et WebSocket : meilleures pratiques pour le transfert de données en temps réel Introduction : Dans le développement d'applications Web, le transfert de données en temps réel est une exigence technique très importante. Le protocole HTTP traditionnel est un protocole de modèle requête-réponse et ne peut pas assurer efficacement la transmission de données en temps réel. Afin de répondre aux besoins de transmission de données en temps réel, le protocole WebSocket a vu le jour. WebSocket est un protocole de communication full-duplex qui permet de communiquer en full-duplex via une seule connexion TCP. Comparé à H

Comment utiliser la coroutine Swoole dans Laravel Comment utiliser la coroutine Swoole dans Laravel Apr 09, 2024 pm 06:48 PM

L'utilisation des coroutines Swoole dans Laravel peut traiter un grand nombre de requêtes simultanément. Les avantages incluent : Traitement simultané : permet de traiter plusieurs requêtes en même temps. Hautes performances : Basé sur le mécanisme d’événements Linux epoll, il traite efficacement les requêtes. Faible consommation de ressources : nécessite moins de ressources serveur. Facile à intégrer : intégration transparente avec le framework Laravel, simple à utiliser.

SSE et WebSocket SSE et WebSocket Apr 17, 2024 pm 02:18 PM

Dans cet article, nous comparerons les événements envoyés par le serveur (SSE) et les WebSockets, qui sont tous deux des méthodes fiables pour fournir des données. Nous les analyserons sous huit aspects, notamment la direction de la communication, le protocole sous-jacent, la sécurité, la facilité d'utilisation, les performances, la structure des messages, la facilité d'utilisation et les outils de test. Une comparaison de ces aspects est résumée comme suit : Catégorie Événement envoyé par le serveur (SSE) Direction de communication WebSocket Unidirectionnel Bidirectionnel Protocole sous-jacent HTTP Sécurité du protocole WebSocket Identique à HTTP Failles de sécurité existantes Facilité d'utilisation Paramètres Paramètres simples Performances complexes Vitesse d'envoi rapide des messages Affecté par le traitement des messages et la gestion des connexions Structure du message Texte brut ou binaire Facilité d'utilisation Largement disponible Utile pour l'intégration de WebSocket

Comment swoole_process permet-il aux utilisateurs de changer ? Comment swoole_process permet-il aux utilisateurs de changer ? Apr 09, 2024 pm 06:21 PM

Swoole Process permet aux utilisateurs de changer. Les étapes spécifiques sont les suivantes : créer un processus ; définir l'utilisateur du processus pour démarrer le processus ;

Lequel est le meilleur, Swoole ou Workerman ? Lequel est le meilleur, Swoole ou Workerman ? Apr 09, 2024 pm 07:00 PM

Swoole et Workerman sont tous deux des frameworks de serveur PHP hautes performances. Connu pour son traitement asynchrone, ses excellentes performances et son évolutivité, Swoole convient aux projets qui doivent gérer un grand nombre de requêtes simultanées et un débit élevé. Workerman offre la flexibilité des modes asynchrone et synchrone, avec une API intuitive mieux adaptée à la facilité d'utilisation et aux projets gérant des volumes de concurrence inférieurs.

L'histoire du développement des souris sans fil L'histoire du développement des souris sans fil Jun 12, 2024 pm 08:52 PM

Titre original : « Comment une souris sans fil devient-elle sans fil ? 》Les souris sans fil sont progressivement devenues un élément standard des ordinateurs de bureau d'aujourd'hui. Désormais, nous n'avons plus besoin de traîner de longs câbles. Mais comment fonctionne une souris sans fil ? Aujourd'hui, nous allons découvrir l'histoire du développement de la souris sans fil n°1. Saviez-vous que la souris sans fil a maintenant 40 ans ? En 1984, Logitech a développé la première souris sans fil au monde, mais cette souris sans fil utilisait l'infrarouge comme signal. On dit que le transporteur ressemble à l'image ci-dessous, mais il a ensuite échoué pour des raisons de performances. Ce n'est qu'en 1994, dix ans plus tard, que Logitech réussit enfin à développer une souris sans fil fonctionnant à 27 MHz. Cette fréquence de 27 MHz est également devenue la souris sans fil pendant longtemps.

Guide de développement PHP Websocket pour implémenter la fonction de traduction en temps réel Guide de développement PHP Websocket pour implémenter la fonction de traduction en temps réel Dec 18, 2023 pm 05:52 PM

Guide de développement PHP Websocket : Implémentation de la fonction de traduction en temps réel Introduction : Avec le développement d'Internet, la communication en temps réel devient de plus en plus importante dans divers scénarios d'application. En tant que protocole de communication émergent, Websocket offre une bonne prise en charge de la communication en temps réel. Cet article vous expliquera en détail comment utiliser PHP pour développer des applications Websocket et combinera la fonction de traduction en temps réel pour démontrer son application spécifique. 1. Qu'est-ce que le protocole Websocket ? Le protocole Websocket est un

See all articles