Heim > Artikel > PHP-Framework > Wie verwende ich WebSocket für die Echtzeitkommunikation in ThinkPHP6?
WebSocket ist ein Vollduplex-Kommunikationsprotokoll, das eine Echtzeitverbindung zwischen dem Server und dem Client herstellen kann, um eine Echtzeitkommunikation zu erreichen. In der Webentwicklung ist ThinkPHP das am häufigsten verwendete PHP-Framework. Wie kann man WebSocket für die Echtzeitkommunikation in ThinkPHP6 verwenden?
Zuerst müssen Sie die Swoole-Erweiterung auf dem Server installieren. Sie können den Composer-Befehl verwenden, um Folgendes zu installieren:
composer require swoole/swoole
Hinweis: Für die Verwendung der Swoole-Erweiterung ist eine PHP-Version >= 7.0 erforderlich.
In ThinkPHP6 können Sie einen WebSocket-Dienst über benutzerdefinierte Befehle erstellen. Öffnen Sie das Befehlszeilentool, geben Sie das Stammverzeichnis des Projekts ein und führen Sie den folgenden Befehl aus:
php think make:command WebSocket
Nach der Ausführung des Befehls wird die Datei WebSocket.php im Verzeichnis app/command generiert. Fügen Sie in dieser Datei den folgenden Code hinzu:
<?php namespace appcommand; use swoole_websocket_server; use swoole_http_request; use thinkconsoleCommand; use thinkconsoleInput; use thinkconsoleOutput; class WebSocket extends Command { protected function configure() { // 给命令起一个名字 $this->setName('swoole:websocket') ->setDescription('Start websocket server'); } protected function execute(Input $input, Output $output) { $server = new swoole_websocket_server("0.0.0.0", 9501); // 监听WebSocket连接打开事件 $server->on('open', function (swoole_websocket_server $server, swoole_http_request $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (swoole_websocket_server $server, $frame) { echo "received message: {$frame->data} "; // 广播消息给所有连接的客户端 $server->push($frame->fd, "this is server"); }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start(); } }
Führen Sie den folgenden Befehl aus, um den WebSocket-Dienst zu starten:
php think swoole:websocket
In der Ansicht können Sie die WebSocket-API von JavaScript verwenden, um mit dem Server in zu kommunizieren Echtzeit. Zum Beispiel:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>WebSocket</title> </head> <body> <script> var ws = new WebSocket('ws://localhost:9501'); ws.onopen = function(){ console.log('WebSocket open'); }; ws.onmessage = function(ev){ console.log('WebSocket message: ' + ev.data); }; ws.onclose = function(){ console.log('WebSocket close'); }; </script> </body> </html>
Der obige Code erstellt eine WebSocket-Instanz und stellt eine Verbindung zum lokalen WebSocket-Dienst her. Wenn der Server eine Nachricht sendet, wird die Funktion onmessage zur Verarbeitung aufgerufen. Sie können Nachrichten an den Server senden, indem Sie die Sendefunktion der Instanz aufrufen.
Zu diesem Zeitpunkt wurde der WebSocket-Dienst erfolgreich erstellt und eine Echtzeit-Kommunikationsverbindung mit dem Front-End hergestellt.
Zusammenfassung
In ThinkPHP6 kann mithilfe der Swoole-Erweiterung die WebSocket-Echtzeitkommunikationsfunktion einfach implementiert werden. Durch die Aktivierung des WebSocket-Dienstes über benutzerdefinierte Befehle und die Kombination mit der JavaScript-WebSocket-API kann Echtzeitkommunikation in Webanwendungen erreicht werden, um eine Vielzahl von Geschäftsanforderungen zu erfüllen.
Das obige ist der detaillierte Inhalt vonWie verwende ich WebSocket für die Echtzeitkommunikation in ThinkPHP6?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!