222 lines
7.3 KiB
PHP
222 lines
7.3 KiB
PHP
<?php
|
||
|
||
namespace app\api\model;
|
||
use think\facade\Log;
|
||
class WebSocketPush
|
||
{
|
||
public $websocket_api_address;
|
||
public $websocket_api_key;
|
||
//声网
|
||
public $customer_key; //声网key
|
||
public $customer_secret; //声网secret
|
||
public $app_id; //声网appid
|
||
public $app_certificate;
|
||
public $channel_name = '123456789'; //频道
|
||
public $header_arr = []; //请求头
|
||
public $base_url = 'https://api.agora.io/dev/v2/project/';
|
||
// public $base_url = 'https://api.agora.io/dev/v1/projects';
|
||
public $request_url;
|
||
public $uid;
|
||
public $token;
|
||
public $credentials;
|
||
/*
|
||
200 通用数据
|
||
|
||
房间PK
|
||
220 推送PK当前结果数据
|
||
|
||
300
|
||
用户进入房间推送消息
|
||
301
|
||
房间麦位信息
|
||
302
|
||
房间赠送礼物推送数据
|
||
303
|
||
开宝箱房间播报数据
|
||
304
|
||
开宝箱全服播报数据
|
||
400
|
||
房间相亲数据
|
||
|
||
355
|
||
挂件推送
|
||
|
||
369
|
||
清理房间用户推送
|
||
|
||
3001
|
||
竞拍前三名信息
|
||
3002
|
||
签约成功推送
|
||
|
||
3005
|
||
绑定关系成功推送
|
||
|
||
3010
|
||
自己签约的艺人被拍卖
|
||
|
||
*/
|
||
|
||
public function __construct()
|
||
{
|
||
$config = model('admin/Config')->get_uncache_system_config();
|
||
// $this->websocket_api_address = $config['websocket_api_address'];
|
||
// $this->websocket_api_key = $config['websocket_api_key'];
|
||
// $this->uid = 99999999966;
|
||
// $this->token = $token;
|
||
|
||
$this->app_id = $config['agora_app_id'];
|
||
$this->customer_key = $config['agora_app_key'];
|
||
$this->customer_secret = $config['agora_app_secret'];
|
||
// $this->app_certificate = $config['agora_app_certificate'];
|
||
// $this->token = model('agora')->agora_rtm_token_info($this->uid);
|
||
$this->credentials = $this->customer_key . ':' . $this->customer_secret;
|
||
// dump($this->customer_key);
|
||
// dump($this->customer_secret);die;
|
||
$base64Credentials = base64_encode($this->credentials);
|
||
$this->header_arr = [
|
||
// 'x-agora-uid: ' . $this->uid,
|
||
// "x-agora-token: " . $this->token,
|
||
'Authorization: Basic ' . $base64Credentials,
|
||
'Content-Type: application/json'
|
||
];
|
||
}
|
||
|
||
//发送消息给个人
|
||
// public function send_to_one($uid, $content)
|
||
// {
|
||
// $post_data = [];
|
||
// // $post_data['action'] = 'send_to_one';
|
||
// // $post_data['key'] = $this->websocket_api_key;
|
||
// if (is_array($content)) {
|
||
// $post_data['content'] = json_encode($content);
|
||
// } else {
|
||
// $post_data['content'] = $content;
|
||
// }
|
||
// $post_data['uid'] = $uid;
|
||
|
||
// $content = $this->curlPost($this->websocket_api_address, $post_data);
|
||
|
||
// return $content;
|
||
// }
|
||
//发送消息给个人
|
||
public function send_to_one($uid, $content)
|
||
{
|
||
$post_data = [];
|
||
// $post_data['action'] = 'send_to_one';
|
||
// $post_data['key'] = $this->websocket_api_key;
|
||
if (is_array($content)) {
|
||
// $post_data['content'] = json_encode($content);
|
||
$post_data['content'] = $content;
|
||
} else {
|
||
$post_data['content'] = $content;
|
||
}
|
||
// $post_data['uid'] = $uid;
|
||
|
||
// $content = $this->curlPost($this->websocket_api_address, $post_data);
|
||
$this->request_url = $this->base_url . $this->app_id . '/rtm/users/8889987154254/peer_messages';
|
||
$data['payload'] = json_encode($post_data);
|
||
$data['destination'] = strval($uid);
|
||
$data['enable_historical_messaging'] = false;
|
||
$data = json_encode($data);
|
||
$content = $this->curlPost($this->request_url, $data, $this->header_arr);
|
||
|
||
return $content;
|
||
}
|
||
//发送消息到指定房间
|
||
public function send_to_group($rid, $content)
|
||
{
|
||
|
||
$post_data = [];
|
||
|
||
// $post_data['action'] = 'send_to_group';
|
||
// $post_data['key'] = $this->websocket_api_key;
|
||
// if (is_array($content)) {
|
||
// $post_data['content'] = json_encode($content);
|
||
// } else {
|
||
// $post_data['content'] = $content;
|
||
// }
|
||
$post_data['content'] = $content;
|
||
$post_data['hid'] = $rid;
|
||
$data['channel_name'] = strval($rid);
|
||
$data['payload'] = json_encode($post_data);
|
||
$data['enable_historical_messaging'] = false;
|
||
$data = json_encode($data);
|
||
|
||
// $this->request_url = $this->base_url . $this->app_id . '/rtm/users/' . $this->uid . '/channel_messages';
|
||
// $this->request_url = $this->base_url;
|
||
$this->request_url = $this->base_url . $this->app_id . '/rtm/users/8889987154254/channel_messages';
|
||
// dump($data);
|
||
$content = $this->curlPost($this->request_url, $data ,$this->header_arr);
|
||
// dump($content);die;
|
||
return $content;
|
||
}
|
||
//发送群体消息
|
||
public function send_to_all($content)
|
||
{
|
||
$post_data = [];
|
||
|
||
// $post_data['action'] = 'send_to_group';
|
||
// $post_data['key'] = $this->websocket_api_key;
|
||
// if (is_array($content)) {
|
||
// $post_data['content'] = json_encode($content);
|
||
// } else {
|
||
// $post_data['content'] = $content;
|
||
// }
|
||
$post_data['content'] = $content;
|
||
|
||
$data['channel_name'] = $this->channel_name;
|
||
$data['payload'] = json_encode($post_data);
|
||
$data['enable_historical_messaging'] = false;
|
||
$data = json_encode($data);
|
||
|
||
$this->request_url = $this->base_url . $this->app_id . '/rtm/users/8889987154254/channel_messages';
|
||
// dump($this->request_url);die;
|
||
$content = $this->curlPost($this->request_url, $data,$this->header_arr);
|
||
|
||
// dump($content);die;
|
||
return $content;
|
||
}
|
||
|
||
public function getallclients()
|
||
{
|
||
$post_data = [];
|
||
$post_data['action'] = 'getallclients';
|
||
$post_data['key'] = $this->websocket_api_key;
|
||
$content = $this->curlPost($this->websocket_api_address, $post_data);
|
||
return $content;
|
||
}
|
||
|
||
//参数1:访问的URL,参数2:post数据(不填则为GET),参数3:提交的$cookies,参数4:是否返回$cookies
|
||
// public function myCurl($url, $post_data = array(), $header = array(), $cookie = "")
|
||
// {
|
||
// // $url = 'http://paysystem.local.com/index/apip/cc';
|
||
// // dump($url);
|
||
// curlPost($url)
|
||
// }
|
||
|
||
public function curlPost($url, $data = [], $header = [])
|
||
{
|
||
$curl = curl_init();
|
||
curl_setopt($curl, CURLOPT_URL, $url);
|
||
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
|
||
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
|
||
curl_setopt($curl, CURLOPT_TIMEOUT , 0);
|
||
curl_setopt($curl, CURLOPT_MAXREDIRS , 10);
|
||
curl_setopt($curl, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1);
|
||
curl_setopt($curl, CURLOPT_POST, 1);
|
||
if (!empty($data)) {
|
||
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
|
||
}
|
||
if (!empty($header)) {
|
||
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
|
||
}
|
||
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
|
||
$output = curl_exec($curl);
|
||
curl_close($curl);
|
||
return $output;
|
||
}
|
||
|
||
|
||
}
|