Download the PHP package evan-li/think-gateway without Composer
On this page you can find all versions of the php package evan-li/think-gateway. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download evan-li/think-gateway
More information about evan-li/think-gateway
Files in evan-li/think-gateway
Package think-gateway
Short Description gateway worker extend for thinkphp5.1
License Apache-2.0
Informations about the package think-gateway
[TOC]
说明:
thinkphp5.0扩展: v0分支
thinkphp5.1扩展: v1分支
think-gateway扩展
基于tp5的gateway worker扩展
结构说明:
vendor (composer第三方库目录)
├─src 核心代码目录
│ ├─Server.php GatewayWorker扩展控制器文件
│ └─Events.php 默认的消息事件处理类
│
├─worker worker应用入口目录
│ ├─start 服务启动目录
│ │ ├─config.php 注册服务启动文件
│ │ ├─start_register.php 注册服务启动文件
│ │ ├─start_gateway.php gateway(网关)服务启动文件
│ │ └─start_business.php 业务服务启动文件
│ │
│ ├─start.php linux系统服务启动文件
│ └─start-for-win.bat windows系统服务启动批处理文件
│
├─composer.json composer 定义文件
├─LICENSE 授权说明文件
└─README.md README 文件
使用介绍
安装:
-
创建thinkphp5项目
-
添加think-gateway依赖
windows版本请使用
evan-li/think-gateway-for-win
包安装 :
如果没有使用过composer, 请先看 composer入门 , 可以使用composer中国镜像
启动服务:
-
创建一个
Starter
控制器,继承think\gateway\Server
类,用来启动Workerapplication/worker/controller/Starter.php
-
创建worker应用入口
将的`worker` 目录拷贝到项目根目录中, `worker` 目录中包含了服务启动所需要的文件
-
运行服务
-
在linux中, 首先切换到
worker
目录中, 执行命令: - windows系统中, 直接执行worker目录中的
start-for-win.bat
批处理文件
-
到此为止, 我们的gateway-worker服务就跑起来啦 :smile:
消息处理
处理客户端发送的消息时, 增加一个MessageHandler
类, 继承think\gateway\Events
类, 并实现processMessage
方法即可, 需要注意的是, processMessage
方法是静态方法
增加MessageHandler
类之后需要在Starter
控制器中设置消息处理Handler:
app\worker\controller\Starter 类:
默认不设置消息处理类的时候, 调用的是Events类
app\worker\util\EventsHanler 类:
配置说明
配置文件位于worker/start/config.php
文件中, 包含了各个服务的配置信息, 具体说明请查看文件: config.php
Windows中, 由于线程操作支持的问题, 所有的count (子worker启动的线程数) 配置都不会生效
分布式部署
如果需要分布式部署,我们可以通过worker/start
目录中的对应的启动文件来控制启动哪个服务来控制启动哪个服务
分布式部署时根据需要的服务启动对应的服务
处于必要性考虑, register与gateway服务启动时不再加载tp5框架, 只有business服务会加载框架, 以方便在业务服务中使用框架的各种功能
Demo项目目录结构 (只做参考用):
使用正常的tp5目录结构, 框架本身相关的文件及目录不再展示
类说明
Server类介绍
Server类是基于GatewayWorker的控制器扩展类, 使用自己的控制器继承Server类即可, 不需要实现任何方法, 只是起一个框架入口控制器的作用
服务相关的配置信息已归纳到配置文件中, 见: config.php 文件中
Events类介绍
think\gateway\Events
类简单封装了一个连接的初始化事件响应,以及心跳信息忽略, 建议自定义的Events类直接继承 think\gateway\Events
类并实现具体的 processMessage
方法即可
$INIT_EVENT_KEY 属性
$INIT_EVENT_VALUE 属性
当客户端连接服务端后, 服务端会直接给客户端发送一个初始化事件, 将client_id返回
如$initEventKey
设置为 action
, $initEventValue
设置为 init
,
则初始化后服务端给客户端发送一次格式为:{action: 'init', client_id: xxxxxx }
的消息
客户端可以通过此事件获取client_id并到业务系统中将client_id注册到当前用户中
All versions of think-gateway with dependencies
topthink/think-helper Version >=1.0.4
topthink/think-installer Version ^2.0
topthink/framework Version 5.1.*