|
|
<?php
|
|
|
|
|
|
namespace websocket;
|
|
|
|
|
|
use GatewayClient\Gateway;
|
|
|
|
|
|
class Group extends Base
|
|
|
{
|
|
|
/**
|
|
|
* 将client_id加入某个组
|
|
|
* @param string $client_id 客户端ID
|
|
|
* @param string $group_id 分组ID,只能是数字或者字符串
|
|
|
* @date 2022-05-17
|
|
|
*/
|
|
|
public function joinGroup($client_id, $group_id)
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
// client_id与group_id绑定
|
|
|
$result = Gateway::joinGroup($client_id, $group_id);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'client_id' => $client_id,
|
|
|
'group_id' => $group_id
|
|
|
], $result, 'gateway_worker_join_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 向某个分组的所有在线client_id发送数据
|
|
|
* @param string $group_id 分组ID
|
|
|
* @param array $message 消息
|
|
|
* @param string $data_transfer 数据转换 json--转成json格式 ''--不做任何转换
|
|
|
* @date 2022-05-17
|
|
|
*/
|
|
|
public function sendToGroup($group_id, $message = [], $data_transfer = 'json')
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
if ($data_transfer == 'json') {
|
|
|
$message = json_encode($message);
|
|
|
}
|
|
|
|
|
|
// 发送消息
|
|
|
$result = Gateway::sendToGroup($group_id, $message);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'group_id' => $group_id,
|
|
|
'message' => $message,
|
|
|
], $result, 'getaway_worker_send_to_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取某个分组所有在线client_id信息
|
|
|
* @param string $group_id 分组ID
|
|
|
* @date 2022-05-18
|
|
|
*/
|
|
|
public function getClientSessionsByGroup($group_id)
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
// 发送消息
|
|
|
$result = Gateway::getClientSessionsByGroup($group_id);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'group_id' => $group_id
|
|
|
], $result, 'getaway_worker_get_client_session_by_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取某分组当前在线成连接数
|
|
|
* @param string $group_id 分组ID
|
|
|
* @date 2022-07-14
|
|
|
*/
|
|
|
public function getClientIdCountByGroup($group_id)
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
// 发送消息
|
|
|
$result = Gateway::getClientIdCountByGroup($group_id);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'group_id' => $group_id
|
|
|
], $result, 'getaway_worker_get_client_id_count_by_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取某个分组下的在线uid数量
|
|
|
* @param string $group_id 分组ID
|
|
|
* @date 2022-07-14
|
|
|
*/
|
|
|
public function getUidCountByGroup($group_id)
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
// 发送消息
|
|
|
$result = Gateway::getUidCountByGroup($group_id);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'group_id' => $group_id
|
|
|
], $result, 'getaway_worker_get_uid_count_by_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取某个分组所有在线uid列表
|
|
|
* @param string $group_id 分组ID
|
|
|
* @date 2022-07-14
|
|
|
*/
|
|
|
public function getUidListByGroup($group_id)
|
|
|
{
|
|
|
// 设置GatewayWorker服务的Register服务ip和端口,请根据实际情况改成实际值(ip不能是0.0.0.0)
|
|
|
Gateway::$registerAddress = $this->config['ip'] . ':' . $this->config['port'];
|
|
|
|
|
|
// 发送消息
|
|
|
$result = Gateway::getUidListByGroup($group_id);
|
|
|
|
|
|
// 记录日志
|
|
|
$uid = defined('UID') ? UID : '';
|
|
|
platformLog([
|
|
|
'group_id' => $group_id
|
|
|
], $result, 'getaway_worker_get_uid_list_by_group_uid_' . $uid);
|
|
|
|
|
|
return $result;
|
|
|
}
|
|
|
} |