Dans l'exemple précédent, si vous suivez la méthode d'écoute d'événements précédente, le serveur doit créer chaque événement correspondant pour chaque événement de scène sur le client. S'il y a trop d'événements, il y en aura beaucoup dans l'application. /listener file (en fait, ce n'est pas un mauvais phénomène), l'abonnement aux événements consiste à résoudre ce problème et à écrire tous les événements dans un fichier.
Ce qui suit utilise l'abonnement aux événements pour traiter les événements
Tout d'abord, vous devez commenter les événements précédemment écoutés dans app/event.php, puis créer un événement d'écoute : php think make:listener Sous-test.
Configurez ensuite le fichier d'écoute nouvellement créé dans websocket => abonnez-vous dans la configuration config/swoole.php :
'websocket' => [ . . . 'listen' => [], 'subscribe' => [ \app\listener\SubTest::class ], ],
Définissez les événements qui doivent être écoutés dans 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']); } }
La convention de nommage de la méthode d'écoute des événements : on+event scene identifier (hump naming)
Testé avec la page front-end précédente, tout est normal.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!