TP6 + think-swoole 实践(二)

swoole 在 TP 中的用法大概可以归为三类:listen(监听)、subscribe(订阅)、task(任务)。先说一下 listen 和 subscribe,这两种也是各种教程上出现最频繁的。

这三类用法,本质上都是使用 TP6 的“事件”实现的。简单的来说,就是我们先定义一些事件,然后注册listen监听或者subscribe订阅事件(在event.php中),之后就可以通过内部调用来触发事件了。

// 触发UserLogin事件
Event::trigger('UserLogin');
// 或者使用助手函数
event('UserLogin');
// 或者直接使用事件类触发
event('app\event\UserLogin');

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Z3i8OheH-1638762511227)(C:\Users\63404\AppData\Roaming\Typora\typora-user-images\image-20211206100340431.png)]
swoole 用起来也和事件差不多,先注册,然后编写代码,再通过外部访问触发事件。

listen
  1. 注册

    注册可以使用 think-swoole 自带的方式,也可以在 event.php 中进行注册。
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8lJCr3VB-1638762511228)(C:\Users\63404\AppData\Roaming\Typora\typora-user-images\image-20211205210845531.png)]

<?php
// 事件定义文件 event.php
return [
    'bind' => [
    ],

    'listen' => [
        //监听连接,swoole 事件必须以 swoole 开头,事件的首字母需要大写
        'swoole.websocket.Test' => [
            app\listener\WebsocketTest::class
        ],
    ],
];
  1. 创建监听事件

    可以直接在app目录下创建listener目录,并且新建需要的类文件,开始编写代码;也可以进入项目目录,直接使用命令快捷生成:

    php think make:listener WebsocketTest
    
  2. 编写代码,实现功能

    创建成功后,每次触发事件都会执行 handle 方法

    class WebsocketTest
    {
         
        public $websocket = null;
        /**
        * 注入容器管理类,从容器中取出Websocket类,或者也可以直接注入Websocket类,
        */
        public function __construct(Container $container)
        {
         
            $this->websocket = $container->make(Websocket::class);
        }
    
        /**
         * 事件监听处理
         *
         * @return mixed
         */
        public function handle($event)
        {
         
            //回复客户端消息
            $this->websocket->emit("testcallback", ['aaaaa' => 1, 'getdat
  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值