565 lines
18 KiB
PHP
Executable File
565 lines
18 KiB
PHP
Executable File
<?php
|
||
|
||
/**
|
||
* @Author: fm453
|
||
* @Date: 2019-04-27 22:19:28
|
||
* @Last Modified by: fm453
|
||
* @Last Modified time: 2019-04-30 10:11:22
|
||
*/
|
||
|
||
/**
|
||
* 利用workerman制作的推送接口控制器(针对嗨噜应用系统的HOFC嗨骑定向小程序)
|
||
*/
|
||
|
||
namespace frontend\controllers;
|
||
|
||
use Yii;
|
||
use yii\web\Controller;
|
||
|
||
use dataModel;
|
||
|
||
//必须添加这一句,以便引入dataModel外部类库
|
||
|
||
// 引用GateWay Client
|
||
require(__DIR__ . '/../../vendor/workerman/GatewayClient-3.0.0/Gateway.php');
|
||
|
||
// GatewayClient 3.0.0版本开始要使用命名空间
|
||
use GatewayClient\Gateway;
|
||
|
||
// 设置GatewayWorker服务的Register服务ip和端口
|
||
Gateway::$registerAddress = '127.0.0.1:4530';
|
||
|
||
class PushhofcController extends Controller
|
||
{
|
||
public $enableCsrfValidation = FALSE;//取消对POST数据的csrf令牌验证
|
||
|
||
/**
|
||
* 绑定客户端与指定项
|
||
*/
|
||
public function actionBind()
|
||
{
|
||
//常规绑定(绑定到UID,未传入用户详情)
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$data = array();
|
||
header('Access-Control-Allow-Origin:*'); //允许任何网站通过ajax发送请求
|
||
|
||
$group_pre = 'XCX-HOFC-USER';
|
||
|
||
//前台已经建立起长链接,取得了客户端ID号
|
||
$viaDomain = fmFunc_server_via_domain(); //来路域名
|
||
$viaIP = fmFunc_server_via_ip(); //来路IP
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : 'undefined';
|
||
|
||
//根据当前用户身份生成可准确识别的用户ID
|
||
$uid = isset($dataPost['uid']) ? $dataPost['uid'] : 0;
|
||
if (!$uid) {
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '未指定用户';
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
$uid = $group_pre . fmFunc_server_hash_id($uid);
|
||
// client_id与uid绑定
|
||
Gateway::bindUid($client_id, $uid);
|
||
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定用户(' . $uid . ')成功!';
|
||
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
|
||
public function actionBinduser()
|
||
{
|
||
//绑定用户及详情、APPID,同时向数据关联组发送用户信息
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
|
||
$data = array();
|
||
header('Access-Control-Allow-Origin:*'); //允许任何网站通过ajax发送请求
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
//绑定到当前用户组,供服务侧同步绑定校验
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
$viaDomain = fmFunc_server_via_domain(); //来路域名
|
||
$viaIP = fmFunc_server_via_ip();
|
||
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : 'undefined';
|
||
|
||
//根据当前用户身份生成可准确识别的用户ID
|
||
$uid = isset($dataPost['uid']) ? $dataPost['uid'] : 0;
|
||
if (!$uid) {
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '未指定用户';
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
$uid = $group_pre . '-USER-' . fmFunc_server_hash_id($uid);
|
||
// client_id与uid绑定
|
||
Gateway::bindUid($client_id, $uid);
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定用户(' . $uid . ')成功!';
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
|
||
$group_ids = array();
|
||
$group_id = '';
|
||
//绑定小程序ID
|
||
$appid = isset($dataPost['appid']) ? $dataPost['appid'] : 0;
|
||
if (!$appid) {
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '未指定小程序';
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
} else {
|
||
$group_id = 'wxapp_' . $appid;
|
||
$group_ids[$group_id] = $group_pre . fmFunc_server_hash_id($group_id);
|
||
// 加入某个群组(可调用多次加入多个群组)
|
||
Gateway::joinGroup($client_id, $group_ids[$group_id]); //奖用户加入指定会员组
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定小程序(' . $appid . ')成功!';
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
}
|
||
|
||
//向数据展板推送用户信息
|
||
$user = isset($dataPost['user']) ? $dataPost['user'] : [];
|
||
$time = time();
|
||
//构造反馈消息
|
||
$data = array();
|
||
$data['type'] = 'content'; //消息反馈类型:alert,confirm,toast,content,reg
|
||
if (isset($dataPost['new']) && $dataPost['new'] == 1) {
|
||
$data['type'] = 'reg';
|
||
}
|
||
$data['msg'] = '由[' . $viaIP . ']进入了寻宝应用(' . date('H:i') . ')';
|
||
$data['status'] = 1; //消息状态
|
||
$data['avatar'] = isset($user['face']) ? $user['face'] : '';
|
||
$data['username'] = $user['nick_name']; //昵称
|
||
$data['title'] = '系统提示'; //消息标题
|
||
$data['mid'] = isset($user['user_id']) ? $user['user_id'] : -1; //消息来源会员, -1为公众号本身
|
||
$data['id'] = md5($time . '_' . $user['user_id']);
|
||
$data['ctype'] = 0; //消息内容类型(-1,系统消息;-2表情;-3快捷表态;-4 红包;0,默认,文本消息;1图片;3音频; 4视频;)
|
||
$data['createtime'] = $time;
|
||
$data = json_encode($data);
|
||
//推送数据
|
||
Gateway::sendToGroup($group_ids[$group_id], $data);
|
||
return;
|
||
}
|
||
|
||
public function actionBindgroup()
|
||
{
|
||
//绑定用户组
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$data = array();
|
||
header('Access-Control-Allow-Origin:*'); //允许任何网站通过ajax发送请求
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
//绑定到当前用户组,供服务侧同步绑定校验
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : 'undefined';
|
||
|
||
$group_ids = array();
|
||
|
||
$group_id = isset($dataPost['groupid']) ? $dataPost['groupid'] : 0;
|
||
if ($group_id) {
|
||
$group_ids[0] = $group_pre . fmFunc_server_hash_id(0);;
|
||
// 加入某个群组(可调用多次加入多个群组)
|
||
Gateway::joinGroup($client_id, $group_ids[0]); //将用户加入0会员组
|
||
}
|
||
$group_ids[$group_id] = $group_pre . fmFunc_server_hash_id($group_id);
|
||
// 加入某个群组(可调用多次加入多个群组)
|
||
Gateway::joinGroup($client_id, $group_ids[$group_id]); //奖用户加入指定会员组
|
||
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定用户组成功!';
|
||
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data['groupids'] = $group_ids;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
|
||
public function actionBindteam()
|
||
{
|
||
//绑定团队ID,方便同步接收
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$data = array();
|
||
header('Access-Control-Allow-Origin:*'); //允许任何网站通过ajax发送请求
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : 'undefined';
|
||
|
||
$group_ids = array();
|
||
|
||
$teamid = isset($dataPost['teamid']) ? $dataPost['teamid'] : 0;
|
||
if (!$teamid) {
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '未指定队伍';
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
$group_id = 'team_' . $teamid;
|
||
$group_ids[$group_id] = $group_pre . fmFunc_server_hash_id($group_id);
|
||
// 加入某个群组(可调用多次加入多个群组)
|
||
Gateway::joinGroup($client_id, $group_ids[$group_id]); //奖用户加入指定会员组
|
||
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定队伍(' . $teamid . ')成功!';
|
||
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
|
||
public function actionBindwxapp()
|
||
{
|
||
//绑定小程序ID
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$data = array();
|
||
header('Access-Control-Allow-Origin:*'); //允许任何网站通过ajax发送请求
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : 'undefined';
|
||
|
||
$group_ids = array();
|
||
|
||
$appid = isset($dataPost['appid']) ? $dataPost['appid'] : 0;
|
||
if (!$appid) {
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '未指定小程序';
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
$group_id = 'wxapp_' . $appid;
|
||
$group_ids[$group_id] = $group_pre . fmFunc_server_hash_id($group_id);
|
||
// 加入某个群组(可调用多次加入多个群组)
|
||
Gateway::joinGroup($client_id, $group_ids[$group_id]); //奖用户加入指定会员组
|
||
|
||
//发送反馈消息
|
||
$message = '棒,客户端绑定小程序(' . $appid . ')成功!';
|
||
|
||
$data = array();
|
||
$data['type'] = 'bind';
|
||
$data['msg'] = $message;
|
||
$data = json_encode($data);
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
|
||
/**
|
||
* 接收客户端数据
|
||
*/
|
||
public function actionIn()
|
||
{
|
||
$group_pre = 'XCX-HOFC';
|
||
header('Access-Control-Allow-Origin:*'); //允许指定网站通过ajax发送请求
|
||
// 建立socket连接到内部推送端口
|
||
$client = stream_socket_client('tcp://127.0.0.1:4530');
|
||
|
||
//如果用户已经登陆,uid和群组id存在
|
||
//TBD 构建uid、group_id的生成方式
|
||
$uid = isset($dataPost['uid']) ? $dataPost['uid'] : 0;
|
||
$group_id = isset($dataPost['group']) ? $dataPost['group'] : 0;
|
||
|
||
//$client_id 通过前端传入
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : 0;
|
||
|
||
// 推送的数据,包含uid字段,表示是给这个uid推送
|
||
$uid = isset(Yii::$app->user->identity->username) ? Yii::$app->user->identity->username : '0';
|
||
$data = array('uid' => $uid, 'msg' => urlencode('嗯,这个是测试用的'));
|
||
|
||
// 发送数据,注意该端口是Text协议的端口,Text协议需要在数据末尾加上换行符
|
||
fwrite($client, json_encode($data) . "\n");
|
||
|
||
// 读取推送结果
|
||
// echo '$client=='.$client;
|
||
//echo fread($client, 8192);
|
||
}
|
||
|
||
/**
|
||
* 向客户端推送消息
|
||
*/
|
||
public function actionOut()
|
||
{
|
||
global $_FM;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$params = Yii::$app->params;
|
||
header('Access-Control-Allow-Origin:*'); //允许指定网站通过ajax发送请求
|
||
require dirname(__FILE__) . '/_public/plat.php';
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
/*设置REDIS缓存*/
|
||
//初始化$cache = new \Redis();
|
||
$cache = new \Redis();
|
||
$cache->connect($params['redis']['IP'], $params['redis']['PORT']);
|
||
// 先检查是否存在,然后写入并设置有效时间
|
||
$key = 'FmWebSorcketCount';
|
||
$CACHE_PREFIX = 'DACMS';
|
||
$count = 0;
|
||
if ($cache->exists($CACHE_PREFIX . $key)) {
|
||
// 读取
|
||
$count = $cache->get($CACHE_PREFIX . $key);
|
||
//清除
|
||
$cache->delete($CACHE_PREFIX . $key);
|
||
}
|
||
|
||
$cache->set($CACHE_PREFIX . $key, $count + 1);
|
||
$expire = time() + 604800; //一周时间再过期
|
||
$cache->expire($CACHE_PREFIX . $key, $expire);
|
||
|
||
//前台已经建立起长链接,取得了客户端ID号;需要绑定到当前用户,并返回用户uid,供服务侧同步绑定校验
|
||
$viaDomain = fmFunc_server_via_domain(); //来路域名
|
||
$viaIP = fmFunc_server_via_ip(); //来路IP
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : '7f000001b0f400000010';
|
||
|
||
//处理POST数据
|
||
$client_type = isset($dataPost['client_type']) ? $dataPost['client_type'] : '';
|
||
$msg_type = isset($dataPost['msg_type']) ? $dataPost['msg_type'] : '';
|
||
if (!$msg_type) {
|
||
$msg_type = isset($dataGet['msg_type']) ? $dataGet['msg_type'] : '';
|
||
}
|
||
|
||
$msg = isset($dataPost['msg']) ? $dataPost['msg'] : '';
|
||
if (!$msg) {
|
||
$msg = isset($dataGet['msg']) ? $dataGet['msg'] : '';
|
||
}
|
||
|
||
//构造反馈消息
|
||
$data = array();
|
||
$data['type'] = $msg_type;
|
||
$data['msg'] = $msg;
|
||
|
||
if (isset($dataGet['debug'])) {
|
||
//向全体推送数据
|
||
$data['msg'] = empty($data['msg']) ? '第' . $count . '次测试群发' : $data['msg'];
|
||
$count++;
|
||
$data = json_encode($data);
|
||
Gateway::sendToAll($data);
|
||
return;
|
||
}
|
||
|
||
$data = json_encode($data);
|
||
|
||
//根据情况发送消息
|
||
switch ($hasToken) {
|
||
case TRUE:
|
||
//根据当前用户身份生成可准确识别的用户ID
|
||
$uid = isset($dataPost['uid']) ? $dataPost['uid'] : '';
|
||
if ($uid) {
|
||
$uid = fmFunc_server_hash_id($uid);
|
||
Gateway::sendToUid($uid, $data);
|
||
}
|
||
|
||
//有证书时,可继续下一步的推送
|
||
if (!$hasCert) {
|
||
break; //无证书,不再继续
|
||
}
|
||
|
||
//已指派分组时
|
||
$group_id = isset($dataPost['group']) ? $dataPost['group'] : 0;
|
||
if ($groud_id) {
|
||
$group_id = $group_pre . fmFunc_server_hash_id($group_id);
|
||
Gateway::sendToGroup($group_id, $data);
|
||
break; //执行后结束此次推送
|
||
}
|
||
|
||
if ($client_type) {
|
||
$group_id = $type;
|
||
$group_id = $group_pre . fmFunc_server_hash_id($group_id);
|
||
Gateway::sendToGroup($group_id, $data);
|
||
}
|
||
break;
|
||
|
||
case FALSE;
|
||
//只发送给指定客户端
|
||
Gateway::sendToClient($client_id, $data);
|
||
break;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 接收客户端数据并向全部客户端群发
|
||
*/
|
||
public function actionSend2all()
|
||
{
|
||
header('Access-Control-Allow-Origin:*'); //允许指定网站通过ajax发送请求
|
||
global $_FM;
|
||
global $_HI;
|
||
//数据取出方法
|
||
$dataGet = $_FM['get']; //GET进来的参数
|
||
$dataPost = $_FM['post']; //POST进来的参数
|
||
$params = Yii::$app->params;
|
||
|
||
$group_pre = 'XCX-HOFC';
|
||
|
||
/*设置REDIS缓存*/
|
||
//初始化$cache = new \Redis();
|
||
$cache = new \Redis();
|
||
$cache->connect($params['redis']['IP'], $params['redis']['PORT']);
|
||
// 先检查是否存在,然后写入并设置有效时间
|
||
$key = 'FmWebSorcketCount';
|
||
$CACHE_PREFIX = 'DACMS';
|
||
$count = 0;
|
||
if ($cache->exists($CACHE_PREFIX . $key)) {
|
||
// 读取
|
||
$count = $cache->get($CACHE_PREFIX . $key);
|
||
//清除
|
||
$cache->delete($CACHE_PREFIX . $key);
|
||
}
|
||
|
||
$cache->set($CACHE_PREFIX . $key, $count + 1);
|
||
$expire = time() + 604800; //一周时间再过期
|
||
$cache->expire($CACHE_PREFIX . $key, $expire);
|
||
|
||
//前台已经建立起长链接,取得了客户端ID号;需要绑定到当前用户,并返回用户uid,供服务侧同步绑定校验
|
||
$viaDomain = fmFunc_server_via_domain(); //来路域名
|
||
$viaIP = fmFunc_server_via_ip(); //来路IP
|
||
$timestamp = isset($_FM['timestamp']) ? $_FM['timestamp'] : time();
|
||
|
||
//通过前端GET传入的
|
||
$client_id = isset($dataGet['client_id']) ? $dataGet['client_id'] : ' ';
|
||
if (!$client_id) {
|
||
return;
|
||
}
|
||
|
||
//处理POST数据
|
||
$msg_type = isset($dataPost['msg_type']) ? $dataPost['msg_type'] : '';
|
||
if (!$msg_type) {
|
||
$msg_type = isset($dataGet['msg_type']) ? $dataGet['msg_type'] : '';
|
||
}
|
||
|
||
$msg = isset($dataPost['msg']) ? $dataPost['msg'] : '';
|
||
if (!$msg) {
|
||
$msg = isset($dataGet['msg']) ? $dataGet['msg'] : '';
|
||
}
|
||
|
||
//构造反馈消息
|
||
$data = array();
|
||
$data['type'] = $msg_type; //消息反馈类型:alert,confirm,toast,content
|
||
$data['msg'] = $msg;
|
||
$data['status'] = 1; //消息状态
|
||
$data['avatar'] = isset($dataPost['avatar']) ? $dataPost['avatar'] : '';
|
||
$data['username'] = '管理员'; //昵称
|
||
$data['title'] = '系统提示'; //消息标题
|
||
$data['mid'] = isset($dataPost['mid']) ? $dataPost['mid'] : 1; //消息来源会员, -1为公众号本身
|
||
$time = time();
|
||
$data['id'] = isset($dataPost['id']) ? $dataPost['id'] : md5($time . '_' . $data['mid']);
|
||
$data['ctype'] = isset($dataPost['type']) ? $dataPost['type'] : 0; //消息内容类型(-1,系统消息;-2表情;-3快捷表态;-4 红包;0,默认,文本消息;1图片;3音频; 4视频;)
|
||
$data['createtime'] = $time;
|
||
if (isset($dataGet['debug'])) {
|
||
//向全体推送数据
|
||
$data['msg'] = empty($data['msg']) ? '第' . $count . '次测试群发' : $data['msg'];
|
||
$count++;
|
||
$data = json_encode($data);
|
||
Gateway::sendToAll($data);
|
||
return;
|
||
}
|
||
$data = json_encode($data);
|
||
//向全体推送数据
|
||
//设定群发群组
|
||
$appid = isset($dataPost['appid']) ? $dataPost['appid'] : 0;
|
||
$group_id = 'wxapp_' . $appid;
|
||
$group_ids[$group_id] = $group_pre . fmFunc_server_hash_id($group_id);
|
||
$count++;
|
||
Gateway::sendToGroup($group_ids[$group_id], $data);
|
||
|
||
//构造反馈消息
|
||
$data = array();
|
||
$data['type'] = 'toast';
|
||
$data['msg'] = '消息已发送';
|
||
$data = json_encode($data);
|
||
//发送给指定客户端
|
||
Gateway::sendToClient($client_id, $data);
|
||
return;
|
||
}
|
||
} |