php websocket_ThinkSwoole 教程(九)WebSocket 事件订阅

通过前面的实例中,如果按照之前的事件监听方式,客户端的每个场景事件,服务端都需要创建每个对应的事件,如果事件太多, app/listener 目录下将会有很多的文件(其实也不算什么坏现象),事件订阅就是为了解决这一问题,把所有的事件都写在一个文件中。下面用事件订阅的方式处理事件

首先需要把之前在 app/event.php 监听的事件给注释掉,然后创建一个监听事件:php think make:listener SubTest 。

然后在 config/swoole.php 配置中的 websocket => subscribe 配置刚创建的监听文件:

'websocket'  => [        .        .        .        'listen'        => [],        'subscribe'     => [           \app\listener\SubTest::class        ],],

在 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']);    }}

监听事件的方法命名规范:on+事件场景标识(驼峰命名)

用之前的前端页面进行测试,一切正常。

640?wx_fmt=png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值