Wenn Sie im vorherigen Beispiel die vorherige Methode zum Abhören von Ereignissen befolgen, muss der Server für jedes Szenenereignis auf dem Client jedes entsprechende Ereignis erstellen. Wenn zu viele Ereignisse vorhanden sind, befinden sich viele Dateien in der App/. Listener-Verzeichnis (Tatsächlich ist es kein schlechtes Phänomen). Das Ereignisabonnement besteht darin, dieses Problem zu lösen und alle Ereignisse in eine Datei zu schreiben.
Im Folgenden wird ein Ereignisabonnement zur Verarbeitung von Ereignissen verwendet.
Zuerst müssen Sie die Ereignisse, die zuvor in app/event.php abgehört wurden, auskommentieren und dann ein Abhörereignis erstellen: php think make:listener SubTest.
Dann konfigurieren Sie die neu erstellte Listening-Datei in Websocket => subscribe in der Konfiguration config/swoole.php:
'websocket' => [ . . . 'listen' => [], 'subscribe' => [ \app\listener\SubTest::class ], ],
Definieren Sie die Ereignisse, die überwacht werden müssen, in app/listener/SubTest.php:
<?php declare (strict_types = 1); namespace app\listener; class SubTest { protected $websocket = null; public function __construct() { $this -> websocket = app('\think\swoole\Websocket'); } //连接事件 public function onConnect() { $this -> websocket -> emit('sendfd',$this -> websocket -> getSender()); } //加入房间 public function onJoin($event) { $this -> websocket -> join($event['room']); $this -> websocket -> emit('joincallback','加入房间成功'); } public function onRoomTest($event) { $this -> websocket -> to($event['room']) -> emit('roomtestcallback',$event['message']); } }
Nennen Sie die Methode von Zuhörereignisse Spezifikation: On+Event-Szenenidentifikation (Buckelbenennung)
Getestet mit der vorherigen Front-End-Seite, alles ist normal.
Das obige ist der detaillierte Inhalt vonDas WebSocket-Event-Abonnement von Think-Swoole. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!