# 官方文檔:
https://www.workerman.net/doc/gateway-worker/event-functions.html

<br/><br/>
## eventHandler 設置使用哪個類來處理業務,默認值是Events,即默認使用Events.php中的Events類來處理業務。業務類至少要實現onMessage靜態方法,onConnect和onClose靜態方法可以不用實現。
<br/><br/>
```
onWorkerStart(BusinessWorker $businessWorker);
當businessWorker進程啟動時觸發。每個進程生命周期內都只會觸發一次。$businessworker->onWorkerStart和Event::onWorkerStart不會互相覆蓋,如果兩個回調都設置則都會運行。
onConnect(string $client_id);
當客戶端連接上gateway進程時(TCP三次握手完畢時)觸發的回調函數。
$client_id
client_id固定為20個字符的字符串,用來全局標記一個socket連接,每個客戶端連接都會被分配一個全局唯一的client_id。
onWebSocketConnect(string $client_id, array $data);
當客戶端連接上gateway完成websocket握手時觸發的回調函數。
$client_id
client_id固定為20個字符的字符串,用來全局標記一個socket連接,每個客戶端連接都會被分配一個全局唯一的client_id。
$data
websocket握手時的http頭數據,包含get、server等變量
onWebSocketConnect(string $client_id, array $data);
當客戶端連接上gateway完成websocket握手時觸發的回調函數。
$client_id
client_id固定為20個字符的字符串,用來全局標記一個socket連接,每個客戶端連接都會被分配一個全局唯一的client_id。
$data
websocket握手時的http頭數據,包含get、server等變量
onMessage(string $client_id, mixed $recv_data);
當客戶端發來數據(Gateway進程收到數據)后觸發的回調函數
$client_id
全局唯一的客戶端socket連接標識
$recv_data
完整的客戶端請求數據,數據類型取決于Gateway所使用協議的decode方法返的回值類型
onClose(string $client_id);
客戶端與Gateway進程的連接斷開時觸發。不管是客戶端主動斷開還是服務端主動斷開,都會觸發這個回調。
onWorkerStop(BusinessWorker $businessWorker);
當businessWorker進程退出時觸發。每個進程生命周期內都只會觸發一次。
```
# 代碼案例:
~~~
<?php
class User
{
public static function onWorkerStart($business){
echo 'use onWorkerStart'."\n";
}
//接收客戶端的ID與數據 $client_id為ID, $message為數據
public static function onMessage($client_id, $message){
echo '---$client_id-----'.$client_id.'-----$message-----'.$message."\n";
}
//id
public static function onConnect($client_id)
{
echo $client_id."\n";
}
//客戶端斷開連接觸發
public static function onClose($client_id){
echo '----onClose 斷開鏈接---'.$client_id."\n";
}
//當客戶端連接上gateway完成websocket握手時觸發的回調函數。
public static function onWebSocketConnect( $client_id, $data){
echo '----WebSocket---'.$client_id."\n";
var_dump($data);
}
}
~~~
??
- 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里使用