ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 官方文档: 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); } } ~~~