Maison  >  Article  >  développement back-end  >  Comment utiliser l'API WebSocket en PHP pour implémenter des applications Web en temps réel

Comment utiliser l'API WebSocket en PHP pour implémenter des applications Web en temps réel

王林
王林original
2023-06-17 13:04:401525parcourir

Avec le développement de la technologie Internet, les applications Web en temps réel sont devenues une méthode de développement de plus en plus populaire. WebSocket, en tant que protocole de communication full-duplex, est devenu un moyen important d'implémenter des applications Web en temps réel. PHP fournit également l'API WebSocket pour faciliter l'utilisation par les développeurs. Cet article explique comment utiliser l'API WebSocket en PHP pour implémenter des applications Web en temps réel.

1. Présentation de WebSocket

WebSocket est un protocole qui fournit une communication en duplex intégral sur une seule connexion TCP. Il permet aux applications Web de communiquer des données en temps réel entre le client et le serveur. Par rapport au protocole HTTP, WebSocket a une latence plus faible et moins de poignées de main lors de la transmission des données, ce qui permet davantage d'applications Web en temps réel.

2. Utilisez l'API WebSocket en PHP pour implémenter des applications Web en temps réel

  1. Installer WebSocket

PHP WebSocket est basé sur ReactPHP, vous devez donc d'abord installer ReactPHP :

composer require react/socket:^1.11.0 react/event-loop:^1.1.0
  1. Créer un service WebSocket

Le Voici un simple code de service PHP WebSocket :

use ReactSocketConnectionInterface;
use ReactSocketServer;

require __DIR__ . '/vendor/autoload.php';

$loop = ReactEventLoopFactory::create();
$socket = new Server('localhost:8080', $loop);

$clients = new SplObjectStorage();
$socket->on('connection', function (ConnectionInterface $conn) use ($clients) {
    $clients->attach($conn);
    $conn->on('data', function ($data) use ($clients, $conn) {
        foreach ($clients as $client) {
            if ($conn !== $client) {
                $client->write($data);
            }
        }
    });
    $conn->on('close', function () use ($clients, $conn) {
        $clients->detach($conn);
    });
});

$loop->run();

Ce code crée un service WebSocket qui écoute le port 8080 de la machine locale. Lorsqu'un client se connecte, enregistrez l'objet client dans un objet SplObjectStorage. Lorsqu'il y a transmission de données, transmettez les données à d'autres clients à l'exception de l'expéditeur. Lorsque le client se déconnecte, supprimez l'objet client de SplObjectStorage.

  1. Exécutez le service WebSocket

Enregistrez le code ci-dessus en tant que fichier server.php et exécutez la commande php server.php pour démarrer le service WebSocket. À ce stade, le service WebSocket s'exécute déjà sur le port local 8080 et peut accepter les connexions client. server.php文件,运行命令php server.php启动WebSocket服务。此时,WebSocket服务已经在本机的8080端口上运行,并且可以接受客户端连接。

  1. 创建WebSocket客户端

下面是一个简单的PHP WebSocket客户端代码:

use ReactEventLoopFactory;
use ReactSocketConnector;
use ReactSocketConnectionInterface;

require __DIR__ . '/vendor/autoload.php';

$loop = Factory::create();
$connector = new Connector($loop);

$connector->connect('tcp://127.0.0.1:8080')->then(function (ConnectionInterface $conn) use ($loop) {
    $conn->on('data', function ($data) {
        echo $data;
    });
    $loop->addReadStream(STDIN, function () use ($conn) {
        $line = fgets(STDIN);
        $conn->write($line);
    });
}, function (Exception $e) {
    echo 'Could not connect: ' . $e->getMessage() . PHP_EOL;
});

$loop->run();

该代码创建了一个WebSocket客户端,连接到本机的8080端口。当有数据传输时,将数据输出到控制台上。当读取控制台输入时,将输入传输给WebSocket服务端。

  1. 运行WebSocket客户端

保存上述代码为client.php文件,运行命令php client.php启动WebSocket客户端。此时,WebSocket客户端已经连接到本机的WebSocket服务器。

  1. 测试WebSocket通信

在控制台中输入数据,数据将会被发送给WebSocket服务端,服务端将数据回传给除发送者外的其他客户端。我们可以打开多个控制台运行php client.php

    Créer un client WebSocket

    Ce qui suit est un simple code client PHP WebSocket :

    rrreee🎜Ce code crée un client WebSocket et se connecte au port 8080 de la machine locale. Lorsqu'il y a transmission de données, les données sont transmises à la console. Lors de la lecture de l'entrée de la console, transmettez l'entrée au serveur WebSocket. 🎜
      🎜Exécutez le client WebSocket🎜🎜🎜Enregistrez le code ci-dessus en tant que fichier client.php et exécutez la commande php client.php pour démarrez le client WebSocket. À ce stade, le client WebSocket s'est connecté au serveur WebSocket local. 🎜
        🎜Test de la communication WebSocket🎜🎜🎜Entrez les données dans la console, les données seront envoyées au serveur WebSocket et le serveur renverra les données à d'autres clients à l'exception de l'expéditeur. Nous pouvons ouvrir plusieurs consoles et exécuter php client.php pour tester l'effet de communication en temps réel. 🎜🎜3. Résumé🎜🎜L'API WebSocket fournit à PHP un moyen d'implémenter WebSocket, qui peut facilement implémenter des applications Web en temps réel. Cet article explique comment utiliser l'API WebSocket en PHP pour implémenter des applications Web en temps réel. Il couvre une présentation de WebSocket, la création d'un service WebSocket, la création d'un client WebSocket et le test de 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