如何不改动 GatewayWorker 依赖包下自定义协议

news2024/12/19 22:36:54

前言:

         GatewayWorker 是 Workerman 的一个框架,对应用层开发者更友好。GatewayWorker 多了一个网关,也就是 Gateway,负责与客户端连接,消息转发等。而自定义的协议,也就是 gateway 面向客户端提供服务的协议,下面就简单收一下 GatewayWorker 启动后连接的过程吧。

GatewayWorker 流程:

1.  运行 php think worker:gateway start。

2.  启动 Register 进程并开始端口监听。

3.  启动 BusinessWorker 进程,开始异步连接 Register。

4.  启动 Gateway 进程,开启内部协议 (GatewayProtocol) 并监听,同时异步连接 Register。

5.  Gateway 进程将开启的 GatewayProtocol 服务地址发给 Register。

6.  Register 接收 Gateway 内部通讯地址广播给所有 BusinessWorker 进程。

7.  BusinessWorker 异步链接 Gateway,同时 Gateway 也监听来自客户端的链接。

8. 当客户端连接 Gateway 发来消息时,则他从连接的 BusinessWorker 中抽取一个转发。

9.  BusinessWorker 则将连接事件交给 Event 业务处理。

10. Event 处理后又发给 Gateway,Gateway 再发给客户端。

ThinkPHP 集成 GatewayWorker:

        现在新版的 TP 框架已经很好的集成了 GatewayWorker,不再像以前要改动入口文件。composer require topthink/think-worker 就可以安装,里面分别时 think-worker,gateway-worker 和 workerman 三个包。而为了不破环 vendor 包,自定义的协议最好写在 TP 框架的应用层。

开始操作:

1.  app 目录下创建一个 library (目录自行控制),再见一下 Game.php (举个例子,协议名看自己)。

2.  Game.php 需要实现 Workerman 的 ProtocolInterface,且要完成 input,decode,encode 三个方法,之前有介绍,这里就略过。

3. 打开 config 的 gateway_worker.php,以下先不做处理的写好 game 协议。

4. 直接 php think worker:gateway start 运行,则直接报错。

5. 因为 gateway 外部协议需要 Workerman\Protocols 的命令空间,所以只需要给自定义的协议类起一个别名。

class_alias('app\library\Game', 'Protocols\Game');

6. 运行一下并做了测试,这样就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java毕业设计——基于java+JDBC+sqlserver的物业管理系统设计与实现(毕业论文+程序源码)——物业管理系统

基于javaJDBCsqlserver的物业管理系统设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javaJDBCsqlserver的物业管理系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于javaJDB…

【H5微信授权】简单实现H5页面微信授权功能,微信开发者工具报错 系统错误,错误码-1,undefined解决办法【详细】

前言 最近写到了H5公众号,需要微信授权的功能。 这里记录一下授权的流程和踩了个坑 图片 授权代码执行后会跳转到授权的地方,没有授权的会有确认授权,授权过得会这样,直接自动登录,然后再跳转到中转页 授权流程 …

204 - 205.表的基本用法

表的基本操作 1.基本概念 1.1数据库和表的关系 每个数据库包含N张表,及表示在库中 1.2 表(二维表) 行和列组成,可以将复杂的数据保存在简单的表中 表中的每一行就是一条完整的记录 表中的列用于保存每条记录中特点的信息 2.…

【Redis】散列表(Hash)和列表(List)的运用和理解以及Hash和List应用场景对比详解

文章目录一. 散列表(hash)1.1 基本操作1.2 当value字符串的内容是数字时二.列表(List)2.1 基本操作三.Hash和List的应用场景3.1Hash的应用场景3.2List的应用场景一. 散列表(hash) Redis哈希是字符串类型字段和值的映射表。哈希特别适合存储对象。 Redis中…

mindspore.dataset的map问题

1、创建一个包含transform的自定义类并实例化 2. 类的实现如下: 请注意:在call函数中,我并没有调用init中定义的transform操作。 3. ImageFolder_forPretrain的定义如下。 在划红线的那行,出现错误。 错误信息: 疑问…

【Spark】spark-submit作业提交及参数设定

note 文章目录note一、Spark的常用启动方式1.1 local本地模式1.2 Standalone模式1.3 Spark on Yarn模式二、spark-submit 详细参数说明--master--deploy-mode--class--name--jars--packages--exclude-packages--repositories--py-files--files--conf PROPVALUE--properties-fil…

【趣学算法】Day3 贪心算法——背包问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:周小末天天开心 各位大…

tomcat应用部署

目录 tomcta介绍 tomcat安装 每个目录的作用 端口 实验开始 安装,启动MySQL 创建数据库 更改数据库连接 项目导入tomcat和数据库查看 重启tomcat 访问应用 【注意】 tomcta介绍 Tomcat的是完全开源的 Tomcat的是免费的 Tomcat不支持EJB 应用范围&#xff1…

创造一个表格编辑距离指标

这个是我自研的, 与百度PaddleOCR的方式略有不同。 数据的格式: 相当于一个目标检测有两类,分别是table和cell。 在预测值和标签中要先把根据位置关系所有的cell划分到不同的table中。 另外cell标签中还有起止位置 比如 四个数字代表行和…

window10远程桌面控制Ubuntu系统

Windows操作系统作为全球使用最多的个人操作系统,在我们身边随处可见,但放眼各类电子设备的操作系统,windows并不是一家独大,服务器系统大多基于Linux系统开发、手机操作系统几乎都是安卓、更不用说还有苹果的iOS、树莓派、Ubuntu…

【MySQL高级篇】数据库到底是什么?一文带你快速上手MySQL

在学习JavaWeb过程中,数据库学习是不可或缺的。整个JavaWeb体系中,数据库部分用于储存和管理数据,而数据作为网页中非常重要的一部分,自然我们是有必要深入学习数据库的。 推荐学习专栏:Java编程 进阶之路 文章目录1. …

【C语言 数据结构】顺序表的使用

本文借鉴点击跳转 上一篇:线性表的简绍 文章目录顺序表什么是顺序表顺序表的初始化顺序表插入元素顺序表删除元素顺序表 什么是顺序表 顺序表又称顺序存储结构,是线性表的一种,专门存储逻辑关系为“一对一”的数据。 顺序表存储数据的具体…

Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

目录 一.yum——安装软件 二.Vim——文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g——编译器 (1).gcc如何完成…

客快物流大数据项目(八十三):Kudu的优化

文章目录 Kudu的优化 一、​​​​​​​Kudu关键配置 二、​​​​​​​​​​​​​​Kudu的使用限制 1、​​​​​​​​​​​​​​主键 2、Cells 3、​​​​​​​字段 4、表 5、其他限制 6、​​​​​​​​​​​​​​分区限制 7、扩展建议和限制 8、​…

2- 创建Spring项目—— 方式1

导包: 地址:https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/ 如:包名:spring-5.2.3.RELEASE-dist.zip 将其下libs文件夹下的4个jar包导入: spring-context-5.2.3.RELEASE.jar、…

物联网ARM开发-3协议-单总线应用红外遥控

前言:单总线类传感器-红外遥控的实现 目录 一、红外遥控工作原理讲解 1、光的基础知识 2、红外通信 3、红外NEC协议详解 二、红外遥控实例讲解 1、实验目的:按下遥控按键,主机通过红外接收器接收到信号并解码,识别出按键的…

大学生计算机相关专业有什么血泪建议吗?

工作多年后才发现大学期间错过太多!!!给正在攻读CS的你,以下建议: 神级编程网站,堪称程序员的充电站,我给你找好了不能错过_程序员编程指南的博客-CSDN博客_程序员充电网站 大的课程很多&…

LA-PEG-NH2,Lipoic acid-PEG-Amine,硫辛酸PEG氨基用于量子点表面

表面反应性聚乙二醇聚乙二醇化试剂LA-PEG-NH2,又名Lipoic acid-PEG-Amine其中文名为硫辛酸-聚乙二醇-氨基。所属分类为Amine PEG Lipoic acid(LA)PEG。 该科研试剂Lipoic acid-PEG-Amine的分子量均可定制有:(5000、20…

uboot移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口(串口0~3),并且用DB9接口引出了2个串口,分别是串口0和串口2。其中靠近网口的是串口0,远离网口…

java毕业设计——基于java+java-swing的泡泡堂网络游戏设计与实现(毕业论文+程序源码)——泡泡堂网络游戏

基于javajava-swing的泡泡堂网络游戏设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javajava-swing的泡泡堂网络游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于javajava-…