Think-Swoole之WebSocket 事件订阅

发布时间 - 2020-10-26 00:00:00    点击率:

通过前面的实例中,如果按照之前的事件监听方式,客户端的每个场景事件,服务端都需要创建每个对应的事件,如果事件太多, 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 中定义需要监听的事件:

 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+事件场景标识(驼峰命名)

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


# websocket  # 这一  # 太多  # 将会  # 有很多  # 在一  # 创建一个  # 服务端  # 都写  # 进行测试  # 客户端 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在自有机房高效搭建专业网站?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  如何用JavaScript实现文本编辑器_光标和选区怎么处理  独立制作一个网站多少钱,建立网站需要花多少钱?  Laravel如何自定义分页视图?(Pagination示例)  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  如何用花生壳三步快速搭建专属网站?  如何快速搭建FTP站点实现文件共享?  如何基于云服务器快速搭建个人网站?  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Android实现代码画虚线边框背景效果  Laravel如何升级到最新的版本_Laravel版本升级流程与兼容性处理  Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载  如何在云主机上快速搭建网站?  如何获取上海专业网站定制建站电话?  Win11怎样安装网易有道词典_Win11安装词典教程【步骤】  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  详解vue.js组件化开发实践  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何在阿里云高效完成企业建站全流程?  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何获取免费开源的自助建站系统源码?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  lovemo网页版地址 lovemo官网手机登录  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  如何在阿里云虚拟服务器快速搭建网站?  Laravel如何生成URL和重定向?(路由助手函数)  智能起名网站制作软件有哪些,制作logo的软件?  弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  Swift开发中switch语句值绑定模式  Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel如何使用Service Container和依赖注入?(代码示例)  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel如何使用模型观察者?(Observer代码示例)  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  jQuery 常见小例汇总  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  UC浏览器如何设置启动页 UC浏览器启动页设置方法  潮流网站制作头像软件下载,适合母子的网名有哪些?  详解Android中Activity的四大启动模式实验简述  高防服务器如何保障网站安全无虞?  Bootstrap CSS布局之列表  微信小程序 scroll-view组件实现列表页实例代码  如何在服务器上配置二级域名建站?  详解MySQL数据库的安装与密码配置