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数据库的安装与密码配置


}
//加入房间
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']);
}
}