ci = &get_instance(); $this->ci->load->library('myResponse'); $this->ci->config->load('wss'); $url = $this->ci->config->item('url'); $this->jwt_key_system = $this->ci->config->item('jwt_key_system'); $sendPlatform = $params['platform']; //推送消息平台 if (!$sendPlatform) { throw new Exception('请指定推送平台'); } $uid = $params['uid']; if (!$uid) { throw new Exception('请指定推送用户'); } $token = $this->createToken($uid); if (!$url) { throw new Exception('请配置websocket服务地址'); } $url = $url . '?platform=' . $sendPlatform . '&token=' . $token; $this->client = new Client($url); } /** * 发送websocket消息 * @param $requestId * @param $targetPlatform 接收数据平台 * @param $targetUid 目标用户id * @param $data 推送数据 * @return MyResponse */ public function sendMessage($requestId, $targetPlatform, $targetUid, $data) { try { if (!$targetPlatform || !$targetUid || !$data) { throw new Exception('参数错误'); } $sendData = [ 'requestId' => $requestId, 'type' => WsResponse::MST_TYPE_MSG, 'targetPlatform' => $targetPlatform, 'targetUid' => $targetUid, 'data' => $data ]; $this->client->send(json_encode($sendData, JSON_UNESCAPED_UNICODE)); $req = $this->client->receive(); $this->client->close(); $reqData = json_decode($req, true); if (!isset($reqData['code']) || $reqData['code']) { throw new Exception($reqData['msg'] ?: '发送失败'); } return new MyResponse(EXIT_SUCCESS, '发送成功', $reqData); } catch (Exception $e) { return new MyResponse(EXIT_ERROR, $e->getMessage()); } } public function createToken($uid) { return JWT::encode($uid, $this->jwt_key_system); } }