Mit der Entwicklung der Netzwerktechnologie ist WebSocket (Web Socket) zu einem beliebten Protokoll geworden, das einen Echtzeit-Kommunikationskanal zwischen dem Browser und dem Server aufbauen kann, um eine Verbindung aufrechtzuerhalten. Dieses Protokoll spielt eine große Rolle bei der Ermöglichung von Echtzeit-Kommunikationsfunktionen in Webanwendungen.
Im Bereich der PHP-Entwicklung wird zunehmend WebSocket eingesetzt. In diesem Artikel stellen wir die Verwendung von WebSocket in PHP vor.
Zuerst müssen wir eine PHP-WebSocket-Bibliothek verwenden, um WebSocket-Funktionen einfach in PHP zu implementieren. Die derzeit beliebtesten PHP-WebSocket-Bibliotheken sind Ratchet und PHP WebSocket.
Hier verwenden wir Ratchet, das die ReactPHP-Bibliothek zur Implementierung von asynchronem ereignisgesteuertem PHP verwendet, perfekt mit anderen Frameworks kompatibel ist und über Flexibilität und Skalierbarkeit verfügt.
Bevor wir beginnen, müssen wir zuerst Composer installieren, da Ratchet mit Composer installiert und verwaltet wird.
Composer kann hier heruntergeladen werden: https://getcomposer.org/
Installieren Sie Ratchet mit Composer:
composer require cboden/ratchet
In diesem Beispiel werden wir einen einfachen Chatroom implementieren Ratchet schreibt einen WebSocket-Server. Die folgenden Schritte sind zu implementieren:
a. Erstellen Sie einen WebSocket-Server
use RatchetServerIoServer; use RatchetHttpHttpServer; use RatchetWebSocketWsServer; require dirname(__DIR__) . '/vendor/autoload.php'; $server = IoServer::factory( new HttpServer( new WsServer( new Chat() ) ), 8080 ); $server->run();
Hier wird zuerst die Ratchet-Bibliothek vorgestellt und dann ein WebSocket-Server erstellt, wobei HttpServer und WsServer verwendet werden, um die HTTP- bzw. WebSocket-Protokollunterstützung anzugeben und zu übergeben sie an die Chat-Klasse weiter (Später wird gezeigt, dass die Chat-Klasse zur Verarbeitung von Client-Verbindungsanfragen verwendet wird).
Hier hören wir Port 8080.
b. Erstellen Sie einen Chatroom
use RatchetMessageComponentInterface; use RatchetConnectionInterface; class Chat implements MessageComponentInterface { public $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) { if ($client !== $from) { $client->send($msg); } } } public function onClose(ConnectionInterface $conn) { $this->clients->detach($conn); } public function onError(ConnectionInterface $conn, Exception $e) { $conn->close(); } }
Hier erstellen wir eine Klasse namens Chat, die die MessageComponentInterface-Schnittstelle implementiert. Diese Schnittstelle definiert die vom WebSocket-Server in verschiedenen Verbindungszuständen ausgeführten Vorgänge.
Konkret haben wir im Konstruktor eine Client-Variable deklariert, bei der es sich um das SplObjectStorage-Objekt handelt, das den verbundenen Client speichert. In der onOpen-Methode wird dieser Variablen das Verbindungsobjekt zugewiesen.
Wenn von einem Client eine Nachricht eingeht, senden wir die Nachricht über die onMessage-Methode, die bei jeder Verbindung empfangen wird.
In der onClose-Methode wird das Verbindungsobjekt aus der Variablen entfernt. Wenn ein Fehler auftritt und die Client-Verbindung nicht verarbeitet werden kann, wird unsere Funktion onError aufgerufen.
Als nächstes benötigen wir clientseitigen JavaScript-Code, um eine Verbindung zum WebSocket-Server herzustellen.
let socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('WebSocket连接已建立'); }; socket.onmessage = function(event) { console.log('收到消息:' + event.data); };
Hier verwenden wir direkt die API des WebSocket-Objekts, um eine Verbindung herzustellen und Nachrichten an den Server zu senden und zu empfangen.
Wenn Sie die oben genannten Schritte ausgeführt haben, haben Sie erfolgreich einen WebSocket-Server geschrieben. Führen Sie nun Ihren Server aus, entweder über die Befehlszeile:
php server.php
Wenn Sie den Server über die Befehlszeile starten, sollten Ergebnisse ähnlich den folgenden angezeigt werden:
2019-03-22 11:46:55 WebSocketServer: Listening on 0.0.0.0:8080 2019-03-22 11:52:50 WebSocketServer: Opened connection to http://localhost:54616
bedeutet, dass der WebSocket-Dienst erfolgreich gestartet wurde und Port 8080 überwacht.
Öffnen Sie abschließend den Browser und besuchen Sie http://localhost/chat.html. Sie können die Browserverbindung sehen und dem WebSocket-Server beitreten.
let socket = new WebSocket('ws://localhost:8080'); socket.onopen = function(event) { console.log('WebSocket连接已建立'); socket.send('欢迎加入聊天室'); }; socket.onmessage = function(event) { console.log('收到消息:' + event.data); };
Hier senden wir eine Nachricht an den Server und protokollieren sie in der Konsole, wenn die Servernachricht empfangen wird.
Wenn Sie die Testwebseite ausführen, sehen Sie in der Konsole eine Ausgabe ähnlich der folgenden:
WebSocket已连接 WebSocket收到消息:欢迎加入聊天室
Jetzt haben Sie WebSocket erfolgreich in PHP verwendet und einen einfachen Chatroom erstellt. Ich hoffe, dieses Tutorial kann Ihnen hilfreich sein.
Das obige ist der detaillierte Inhalt vonSo verwenden Sie WebSockets in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!