Mit der rasanten Entwicklung der mobilen Internettechnologie ist die Nachfrage der Benutzer nach Instant Messaging und Echtzeitinteraktion sukzessive gestiegen. Als wichtiges Protokoll für die Echtzeitkommunikation im Web weist das WebSocket-Protokoll die Merkmale Vollduplexkommunikation, Echtzeit-Push und geringe Latenz auf und hat sich zum bevorzugten Protokoll in Echtzeit-Interaktionsszenarien entwickelt. Daher müssen wir in der Webentwicklung die Verwendung von WebSocket beherrschen, um eine Echtzeitkommunikation zu erreichen.
In PHP können wir die Swoole-Erweiterung verwenden, um die WebSocket-Funktionalität zu implementieren. Die Bereitstellung und Einrichtung von Swoole erfordert jedoch viel Zeit und Mühe. Für einige Entwickler, die mit Swoole nicht vertraut sind, ist der Lernaufwand ebenfalls relativ hoch.
Heute stellen wir vor, wie man WebSocket in ThinkPHP6 verwendet.
Bevor wir WebSocket in ThinkPHP6 verwenden, müssen wir die Erweiterung topthink/thinker
installieren. topthink/thinker
扩展。
composer require topthink/thinker:dev-master
topthink/thinker
是一个命令行工具,用于在 ThinkPHP6 中运行 PHP 代码和管理异步任务。
我们需要在项目的配置文件 config/socket.php
中配置 WebSocket。
<?php return [ // WebSocket服务器地址,使用内网穿透时填写内网地址 'server' => '127.0.0.1:9501', // WebSocket的应用类,需要实现 hinkworkerServer 接口 'worker_class' => 'appcontrollerWebSocket', ];
我们需要指定 server
的地址以及实现 Server
接口的类 worker_class
,在这里我们将实现 WebSocket 功能的控制器类命名为 WebSocket
,放在 appcontroller
目录下。
我们在 appcontroller
目录下创建一个名为 WebSocket
的控制器,在控制器中实现 Server
接口。
<?php namespace appcontroller; use thinkworkerServer; class WebSocket implements Server { protected $socket = 'websocket://127.0.0.1:9501'; public function onMessage($connection, $data) { foreach ($this->worker->connections as $conn) { $conn->send('user ' . $connection->id . ' said: ' . $data); } } public function onConnect($connection) { echo "new connection from ip " . $connection->getRemoteIp() . " "; } public function onClose($connection) { echo "connection closed: " . $connection->id . " "; } public function onWorkerStart($worker) { // 初始化 } }
在 WebSocket
控制器类中,我们需要实现 onMessage
、onConnect
、onClose
和 onWorkerStart
四个方法。
onMessage
: 当客户端发送数据时,会触发 onMessage
方法,参数 $connection
表示客户端的连接对象,$data
表示客户端发送的数据。onConnect
: 在客户端连接的时候会触发 onConnect
方法,参数 $connection
表示客户端的连接对象。onClose
: 在客户端断开连接的时候会触发 onClose
方法,参数 $connection
表示客户端的连接对象。onWorkerStart
: 在工作进程启动的时候会触发 onWorkerStart
方法,参数 $worker
表示当前工作进程的对象。配置好 WebSocket 之后,我们可以使用 think
命令来启动 WebSocket。
php think worker:start
上述命令会启动一个 WebSocket 服务,并在控制台输出运行日志。
WebSocket 实现之后,我们可以使用 WebSocket 的客户端进行测试。我们可以使用 Chrome
浏览器并安装 Simple WebSocket Client
插件来进行测试。在插件中输入 WebSocket 服务器的地址,点击连接,即可开始使用 WebSocket 通信。
在 Simple WebSocket Client
rrreee
topthink/thinker
ist ein Befehlszeilentool zum Ausführen von PHP-Code und zum Verwalten asynchroner Aufgaben in ThinkPHP6. 2. WebSocket konfigurierenWir müssen WebSocket in der Konfigurationsdatei config/socket.php
konfigurieren. 🎜rrreee🎜Wir müssen die Adresse von server
und die Klasse worker_class
angeben, die die Server
-Schnittstelle implementiert. Hier benennen wir die Controller-Klasse so implementiert die WebSocket-Funktion. Es ist WebSocket
und wird im Verzeichnis appcontroller
abgelegt. 🎜🎜3. WebSocket implementieren🎜🎜Wir erstellen einen Controller mit dem Namen WebSocket
im Verzeichnis appcontroller
und implementieren die Schnittstelle Server
im Controller. 🎜rrreee🎜In der Controller-Klasse WebSocket
müssen wir onMessage
, onConnect
, onClose
und implementieren onWorkerStart
vier Methoden. 🎜onMessage
: Wenn der Client Daten sendet, wird die Methode onMessage
ausgelöst. Der Parameter $connection
repräsentiert die des Clients Verbindungsobjekt. $data
stellt die vom Client gesendeten Daten dar. onConnect
: Die Methode onConnect
wird ausgelöst, wenn der Client eine Verbindung herstellt. Der Parameter $connection
stellt das Verbindungsobjekt des Clients dar . onClose
: Die Methode onClose
wird ausgelöst, wenn der Client die Verbindung trennt. Der Parameter $connection
stellt die Verbindung des Clients dar. Objekt. onWorkerStart
: Die Methode onWorkerStart
wird ausgelöst, wenn der Worker-Prozess startet. Der Parameter $worker
stellt das Objekt von dar der aktuelle Worker-Prozess. think
verwenden, um WebSocket zu starten. 🎜rrreee🎜Der obige Befehl startet einen WebSocket-Dienst und gibt das Betriebsprotokoll auf der Konsole aus. 🎜🎜5. WebSocket testen🎜🎜Nachdem WebSocket implementiert wurde, können wir den WebSocket-Client zum Testen verwenden. Wir können den Browser Chrome
verwenden und zum Testen das Plug-in Simple WebSocket Client
installieren. Geben Sie die Adresse des WebSocket-Servers in das Plug-in ein und klicken Sie auf „Verbinden“, um mit der Nutzung der WebSocket-Kommunikation zu beginnen. 🎜🎜In Simple WebSocket Client
können wir Zeichen eingeben und auf Senden klicken. Außerdem können wir das Ausgabeprotokoll in der Hintergrundkonsole sehen, das anzeigt, dass die WebSocket-Kommunikation normal funktioniert. 🎜🎜Zusammenfassung🎜🎜In diesem Artikel haben wir die Verwendung von WebSocket in ThinkPHP6 vorgestellt. Das WebSocket-Protokoll ist das bevorzugte Protokoll für die Echtzeitkommunikation und seine Einsatzszenarien sind sehr vielfältig. In der tatsächlichen Entwicklung können wir WebSocket verwenden, um Echtzeit-Kommunikationsfunktionen je nach Bedarf einfach zu implementieren und die Benutzererfahrung zu verbessern. 🎜Das obige ist der detaillierte Inhalt vonVerwenden von WebSocket in ThinkPHP6. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!