# 官方文档:
https://www.workerman.net/doc/gateway-worker/gateway.html
# Gateway BusinessWorker Register 三个要一起用并且一起启动才可以
#
![](https://img.kancloud.cn/d0/05/d005a6c25b39b952e4010181cafb9c77_1285x902.png)
## 1、 协议
和Worker一样,在初始化Gateway对象时设置Gateway的协议,例如下面设置Gateway的通讯协议为websocket
~~~php
use \GatewayWorker\Gateway;
require_once './Workerman/Autoloader.php';
// 指定websocket协议
$gateway = new Gateway("websocket://0.0.0.0:8585");
...
~~~
## 2、name
和Worker一样,可以设置Gateway进程的名称,方便status命令中查看统计
## 3、count
和Worker一样,可以设置Gateway进程的数量,以便充分利用多cpu资源
## 4、lanIp
lanIp是Gateway所在服务器的内网IP,默认填写127.0.0.1即可。[多服务器分布式部署](https://www.workerman.net/doc/gateway-worker/how-distributed.html)的时候需要填写真实的内网ip,不能填写127.0.0.1。注意:lanIp只能填写真实ip,不能填写域名或者其它字符串,无论如何都不能写0.0.0.0 .
## 5、startPort
Gateway进程启动后会监听一个本机端口,用来给BusinessWorker提供链接服务,然后Gateway与BusinessWorker之间就通过这个连接通讯。这里设置的是Gateway监听本机端口的起始端口。比如启动了4个Gateway进程,startPort为2000,则每个Gateway进程分别启动的本地端口**一般**为2000、2001、2002、2003。
当本机有多个Gateway/BusinessWorker项目时,需要把每个项目的startPort设置成不同的段
## 6、registerAddress,
注册服务地址,只写格式类似于 '127.0.0.1:1236'
## 7、心跳设置,具体说明见心跳一节
## 8、onWorkerStart
和Worker一样,可以设置Gateway进程启动后的回调函数,一般在这个回调里面初始化一些全局数据
## 9、onWorkerStop
和Worker一样,可以设置Gateway进程关闭的回调函数,一般在这个回调里面做数据清理或者保存数据工作
## 10、onConnect(比较少用到,开发者一般不用关注)
和Worker一样,可以设置onConnect回调,当有客户端连接上来时触发。与Events::onConnect的区别是Events::onConnect运行在BusinessWorker进程上。Gateway::onConnect是运行在Gateway进程上,无法使用\\GatewayWorker\\Lib\\Gateway类提供的接口
## 11、onClose(比较少用到,开发者一般不用关注)
和Worker一样,可以设置onClose回调,当有客户端连接关闭时触发。同样与Events::onClose的区别是Gateway::onClose是运行在Gateway进程上,无法使用\\GatewayWorker\\Lib\\Gateway类提供的接口
# 使用案例:
~~~
<?php
require_once 'vendor/autoload.php';
use Workerman\Worker;
use GatewayWorker\Gateway;
$gate= new Gateway('text://0.0.0.0:1111');
Worker::runAll();
~~~
- WebSocket协议
- 构造函数(6种协议)
- count(进程设置)
- name(链接名称)
- $daemonize(守护进程设置)
- logFile(日志路径)
- stdoutFile(守护进程记录文件)
- connections(获取链接数组的)
- worker的回调属性
- worker类的方法
- Connection类的方法
- getRemotePort获取端口方法
- getRemoteIp获取IP地址
- close 安全关闭连接
- 定时器
- Channel分布式通信组件
- 心跳检测程序
- liunx优化配置
- thinkphp5.1使用worerman
- thinkphp5.1中用Channel实现广播通信
- thinkphp5.1中使用定时器
- thinkphp5.1使用TcpConnection类
- Gateway类使用
- BusinessWorker使用
- Register类的使用
- Events类使用(业务逻辑层)
- Lib\Gateway 接口(经常用)
- webman中间件stomp
- Gateway在thinkphp5.1里使用