Heim > Artikel > Backend-Entwicklung > So kommunizieren Sie in Echtzeit mit dem WebSocket-Protokoll über PHP
So kommunizieren Sie in Echtzeit mit dem WebSocket-Protokoll über PHP
Mit der Entwicklung von Webanwendungen ist die Echtzeitkommunikation in vielen Szenarien wie Online-Chat, Börsenkursen usw. sehr wichtig geworden. Das WebSocket-Protokoll dient zum Aufbau einer Echtzeit-Kommunikationsverbindung zwischen einem Webbrowser und einem Server. In diesem Artikel wird die Verwendung der PHP- und WebSocket-Protokolle für die Echtzeitkommunikation vorgestellt und relevante Codebeispiele bereitgestellt.
1. Einführung in das WebSocket-Protokoll
Das WebSocket-Protokoll ist ein auf dem TCP-Protokoll basierendes Vollduplex-Kommunikationsprotokoll. Es kann dem Server ermöglichen, Nachrichten aktiv an den Client zu senden und vom Client zu empfangen. Im Vergleich zum herkömmlichen HTTP-Protokoll weist das WebSocket-Protokoll die folgenden Merkmale auf:
2. PHP WebSocket-Erweiterung
PHP bietet offiziell keine direkte Unterstützung für WebSocket, aber Sie können WebSocket-Funktionen implementieren, indem Sie Erweiterungen installieren und verwenden. Zu den derzeit am häufigsten verwendeten PHP-WebSocket-Erweiterungen gehören die folgenden:
Aus Platzgründen wird in diesem Artikel die Ratchet-Erweiterung als Beispiel zur Demonstration verwendet.
3. Installieren Sie die Ratchet-Erweiterung
Sie können die Ratchet-Erweiterung über Composer installieren. Führen Sie zur Installation den folgenden Befehl aus:
composer require cboden/ratchet
4. Erstellen Sie einen WebSocket-Server
Das Folgende ist eine einfache WebSocket-Serverimplementierung, die die empfangene Nachricht zurückgeben kann So wie es ist. Zum Client:
<?php use RatchetMessageComponentInterface; use RatchetConnectionInterface; require 'vendor/autoload.php'; class MyWebSocketServer implements MessageComponentInterface { protected $clients; public function __construct() { $this->clients = new SplObjectStorage; } public function onOpen(ConnectionInterface $conn) { $this->clients->attach($conn); } public function onMessage(ConnectionInterface $from, $msg) { foreach ($this->clients as $client) { $client->send($msg); } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { echo "Error: {$e->getMessage()} "; $conn->close(); } } $server = App::make('RatchetServerIoServer', [ new AppMyWebSocketServer() ]); $server->run();
5. Erstellen Sie einen WebSocket-Client
Das Folgende ist eine einfache WebSocket-Client-Implementierung, die mit dem oben genannten Server kommunizieren kann:
<?php use RatchetClientWebSocket; use RatchetClientConnector; use ReactEventLoopFactory as EventLoopFactory; require 'vendor/autoload.php'; $loop = EventLoopFactory::create(); $connector = new Connector($loop); $connector('ws://localhost:8000')->then(function (WebSocket $conn) { $conn->on('message', function ($msg) use ($conn) { echo "Received: {$msg} "; $conn->close(); }); $conn->send('Hello, WebSocket Server!'); }, function (Exception $e) use ($loop) { echo "Could not connect: {$e->getMessage()} "; $loop->stop(); }); $loop->run();
6. Führen Sie den WebSocket-Dienst aus
Starten Sie den WebSocket-Server über Befehlszeile:
php server.php
Dann führen Sie den Client-Code aus:
php client.php
Dann kann eine Echtzeitkommunikation zwischen dem Client und dem Server erreicht werden.
Zusammenfassung:
In diesem Artikel wird kurz die Verwendung der PHP- und WebSocket-Protokolle für die Echtzeitkommunikation vorgestellt und relevante Codebeispiele für die Ratchet-Erweiterung bereitgestellt. Über das WebSocket-Protokoll können wir den Server so implementieren, dass er aktiv Nachrichten an den Client sendet und eine bidirektionale Kommunikation in Echtzeit erreicht. Mit der PHP-WebSocket-Erweiterung können wir ganz einfach WebSocket-Server und -Clients erstellen und durch einfachen Code Echtzeitkommunikation erreichen.
Das obige ist der detaillierte Inhalt vonSo kommunizieren Sie in Echtzeit mit dem WebSocket-Protokoll über PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!