Think-Swoole之WebSocket 事件订阅

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

下面用事件订阅的方式处理事件

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

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

'websocket'  => [        .        .        .        'listen'        => [],        'subscribe'     => [           applistenerSubTest::class        ],],

在 app/listener/SubTest.php 中定义需要监听的事件:

小绿鲸英文文献阅读器 小绿鲸英文文献阅读器

英文文献阅读器,专注提高SCI阅读效率

小绿鲸英文文献阅读器 199 查看详情 小绿鲸英文文献阅读器

 websocket = app('thinkswooleWebsocket');    }    //连接事件    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+事件场景标识(驼峰命名)

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

以上就是Think-Swoole之WebSocket 事件订阅的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/351628.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月5日 22:34:11
下一篇 2025年11月5日 22:35:19

相关推荐

发表回复

登录后才能评论
关注微信