>[warning] 此功能需要 v1.2.3 版本以上 ## 交互时序图: ![](https://box.kancloud.cn/8309886f1bcf61719204e1c6e07e83e2_1182x692.png) 随着 gatewayworker 服务器的启动,系统会监厅 2121端口,采用的是 http协议。 Events.php ``` // 监听一个http端口 $inner_http_worker = new Worker('http://0.0.0.0:2121'); ``` **1、如何向在线客服推送消息?** 微信 和 小程序 客服,无法通过 js 的 websocket 协议连接服务器。因此,客服服务器 和 微信、小程序是通过 http 短连接维持的。 在线的客服,数据库 ws_users 中的 online 字段会被设为 1。因此,您可以通过查询数据库中的 online 状态是 1 的客服,查取一个,推送数据。 ``` <?php $to_uid = "KF1"; // 客服的id $to_name = "客服"; // 客服的名字 $content = [ 'id' => 2, // 用户的id "name" => "jack2", // 用户的名 "message" => "你们好啊", // 推送的消息 "avatar" => "//tva2.sinaimg.cn/crop.0.0.512.512.180/005LMAegjw8f2bp9qg4mrj30e80e8dg5.jpg", // 用户的头像 "ip" => "58.240.254.162", // 用户的ip "group" => 1 // 咨询的用户分组 ]; $push_api_url = "http://127.0.0.1:2121/"; $post_data = [ "type" => "publish", "content" => $content, "to" => $to_uid, "to_name" => $to_name ]; $ch = curl_init (); curl_setopt ( $ch, CURLOPT_URL, $push_api_url); curl_setopt ( $ch, CURLOPT_POST, 1 ); curl_setopt ( $ch, CURLOPT_HEADER, 0 ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 ); curl_setopt ( $ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:")); $return = curl_exec ( $ch ); curl_close ( $ch ); var_export($return); ``` >[danger] $push_api_url = "http://127.0.0.1:2121/"; 此处填写 客服服务端的ip,加端口 **2、客服回复的消息,如何推送给用户?** 客服推送的数据,会通过。 application/service/controller/Index.php,进行接收转发。 ``` // 通过http协议发送数据 public function sendMsgFromHttp() { print_r(input('post.')); } ``` >[info] 您可以在此处,做您的一些业务逻辑。