# 官方文檔:
https://www.workerman.net/doc/gateway-worker/gateway.html
# Gateway BusinessWorker Register 三個要一起用并且一起啟動才可以
#

## 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里使用