2019-01-17 11:05:47 +08:00
|
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace service;
|
|
|
|
|
|
2019-01-22 11:19:05 +08:00
|
|
|
|
require_once env('app_path') . 'common/Plugins/GateWayWorker/vendor/autoload.php';
|
2019-01-24 11:18:42 +08:00
|
|
|
|
require_once env('app_path') . 'common/Plugins/GateWayWorker/config.php';
|
2019-01-22 11:19:05 +08:00
|
|
|
|
|
2019-01-17 11:05:47 +08:00
|
|
|
|
use GatewayWorker\Lib\Gateway;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 消息推送服务
|
|
|
|
|
* Class MessageService
|
|
|
|
|
* @package service
|
|
|
|
|
*/
|
|
|
|
|
class MessageService
|
|
|
|
|
{
|
2019-01-22 16:04:42 +08:00
|
|
|
|
|
2019-01-22 11:19:05 +08:00
|
|
|
|
/**
|
|
|
|
|
* MessageService constructor.
|
|
|
|
|
*/
|
2019-01-17 11:05:47 +08:00
|
|
|
|
public function __construct()
|
|
|
|
|
{
|
|
|
|
|
/**
|
|
|
|
|
*====这个步骤是必须的====
|
|
|
|
|
*这里填写Register服务的ip(通常是运行GatewayWorker的服务器ip)和端口
|
|
|
|
|
*注意Register服务端口在start_register.php中可以找到(chat默认是1236)
|
|
|
|
|
*这里假设GatewayClient和Register服务都在一台服务器上,ip填写127.0.0.1
|
|
|
|
|
*注意:ip不能是0.0.0.0
|
|
|
|
|
**/
|
2019-01-24 11:18:42 +08:00
|
|
|
|
Gateway::$registerAddress = SERVER_ADDRESS . ':' . SERVER_PORT;
|
2019-01-17 11:05:47 +08:00
|
|
|
|
}
|
|
|
|
|
|
2019-01-22 16:04:42 +08:00
|
|
|
|
public function isUidOnline($uid)
|
|
|
|
|
{
|
|
|
|
|
return Gateway::isUidOnline($uid);
|
|
|
|
|
}
|
|
|
|
|
|
2019-01-17 11:05:47 +08:00
|
|
|
|
public function sendToAll($message, $action = '', $client_id_array = null, $exclude_client_id = null, $raw = false)
|
|
|
|
|
{
|
|
|
|
|
Gateway::sendToAll($this->messageFormat($message, $action), $client_id_array, $exclude_client_id, $raw);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function sendToUid($uid, $message, $action = '')
|
|
|
|
|
{
|
|
|
|
|
Gateway::sendToUid($uid, $this->messageFormat($message, $action));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function sendToClient($client_id, $message, $action = '')
|
|
|
|
|
{
|
|
|
|
|
Gateway::sendToClient($client_id, $this->messageFormat($message, $action));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function sendToGroup($group, $message, $action = '')
|
|
|
|
|
{
|
|
|
|
|
Gateway::sendToGroup($group, $this->messageFormat($message, $action));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function bindUid($client_id, $uid)
|
|
|
|
|
{
|
|
|
|
|
Gateway::bindUid($client_id, $uid);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function joinGroup($client_id, $group)
|
|
|
|
|
{
|
|
|
|
|
if ($group) {
|
|
|
|
|
Gateway::joinGroup($client_id, $group);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function messageFormat($message, $action = 'none')
|
|
|
|
|
{
|
|
|
|
|
$messageData = [
|
|
|
|
|
'action' => $action, //推送场景
|
|
|
|
|
'msg' => '', //推送内容
|
|
|
|
|
'title' => '消息通知',//推送标题
|
|
|
|
|
'data' => [],//推送数据
|
|
|
|
|
'uid' => 0,//推送数据
|
|
|
|
|
];
|
|
|
|
|
if (is_array($message)) {
|
|
|
|
|
$messageData['data'] = $message;
|
|
|
|
|
$messageData['msg'] = isset($message['content']) ? $message['content'] : '';
|
|
|
|
|
$messageData['title'] = isset($message['title']) ? $message['title'] : '';
|
|
|
|
|
} else {
|
|
|
|
|
$messageData['msg'] = $message;
|
|
|
|
|
}
|
|
|
|
|
return json_encode($messageData, JSON_UNESCAPED_UNICODE);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|