# 官方文档:
https://www.workerman.net/doc/gateway-worker/event-functions.html
![](https://img.kancloud.cn/f5/75/f5752b68e998b5ab63a467f4035e2f6e_1751x764.png)
<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里使用