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
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
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.
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端口上运行,并且可以接受客户端连接。
下面是一个简单的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服务端。
保存上述代码为client.php
文件,运行命令php client.php
启动WebSocket客户端。此时,WebSocket客户端已经连接到本机的WebSocket服务器。
在控制台中输入数据,数据将会被发送给WebSocket服务端,服务端将数据回传给除发送者外的其他客户端。我们可以打开多个控制台运行php client.php
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. 🎜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. 🎜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!