yunque / pushmessage
There is no license information available for the latest version (v1.0.1) of this package.
socket通讯客户端
v1.0.1
2023-09-22 13:39 UTC
Requires
- php: >=7.2.5
- ext-redis: *
- google/protobuf: v3.24.1
This package is not auto-updated.
Last update: 2025-01-11 17:49:10 UTC
README
环境依赖
composer.json 添加如下:
"google/protobuf": "v3.24.1",
"ext-redis": "*"
执行命令
composer update
推送方法
/*
* 推送消息给指定用户
*/
public static function sendTo(string $uid, MessageProto $msg): bool
/*
* 推送消息给指定用户 批量
*/
public static function sendTos(string $uid, array $msgs): bool
/*
* 推送消息给指定多个用户
* 多个uid 逗号分割
* params $uids=uid1,uid2,uid3
*/
public static function sendToUids(string $uids, array $msgs): bool
/*
* 推送消息给指定用户的某个设备
*/
public static function sendToDid(string $uid, string $did, MessageProto $msg): bool
/*
* 推送批量消息给指定用户的某个设备
*/
public static function sendToDids(string $uid, string $did,array $msgs): bool
/*
* 推送消息给所有人
* @params $msg =MessageProto
*/
public static function sendToAll( MessageProto $msg): bool
/*
* 推送消息给所有人
* @params $msg =MessageProto
*/
public static function sendToAlls( array $msgs): bool
/*
* 遍历消息推给接收人
* @params $msg =[MessageProto]
*/
public static function sendList( array $msg): bool
使用:
$msg = new \yunque\pushmessage\proto\MessageProto();
$msg->setId(1);
$msg->setReceiver("1074");
$msg->setSender($uid);
$msg->setContent(["text" => "挺好的"]);
$msg->setSendTime(time());
$bool=\yunque\pushmessage\service\MessageService::sendTo("1078",$msg);
if($bool){
echo("推送成功")
}
推送消息示例
yunque\pushmessage\service\MessageService.php;
/*
* 示例 推送消息
*/
public static function sendToTest(string $uid): bool
{
$msg = new MessageProto();
$msg->setId(1);
$msg->setReceiver("1074");
$msg->setSender($uid);
$msg->setContent(["text" => "挺好的"]);
$msg->setSendTime(time());
$messagesPubProto = new MessagesPubProto();
$messagesPubProto->setDid("");
$messagesPubProto->setSid("beijing1");
$messagesPubProto->setUid("1078");
$messagesPubProto->setMsg([ $msg]);
$packed = $messagesPubProto->serializeToString();
$buff = [SendActProto::SENDUID, SendTypeProto::MESSAGE];
$buffto = Bytes::tostr($buff);
$buffto = $buffto . $packed;
try {
$ret= self::$redis->publish(self::$channel, $buffto);
if($ret==1){
print_r("ok");
return true;
}
return false;
} catch (\RedisException $e) {
print_r($e);
}
return false;
}
# 使用如下:
MessageService::sendToTest("1078");
下面是关于php protobuf的相关内容
路径需要注意,如果修改路径报错,需要重新生成proto文件。
推送消息服务更多接口参考service 目录具体方法实现
如果修改路径 需要修改composer.json文件
"autoload": {
"psr-4": {
#添加一行映射
"Yunque\\": "Yunque/",
},
然后执行更新
composer 添加一行 引用 "google/protobuf": "v3.24.1" 这个版本要和生成工具 protoc版本一致,否则容易有问题。 然后更新
composer update
Yunque/pushmessage目录下 执行
protoc --php_out= ../ MessageProto.proto
proto模版文件如下 >Yunque/pushmessage/GPBMetadata/MessageProto.proto
syntax = "proto3";
//option go_package = "./;ProtoModel";
package Yunque.pushmessage.proto;
option php_metadata_namespace = "Yunque/pushmessage/GPBMetadata";
message MessageProto {
// 消息id必须
int64 id = 1;
// 操作方法指令可选
string action = 2;
// 消息内容必选
map<string,string> content = 3;
// 发送人uid
string sender = 4;
// 接收人uid
string receiver = 5;
// 拓展 可选
map<string,string> extra = 6;
// 标题 可选
string title = 7;
// 发送时间 比选 秒时间戳
int64 sendTime = 8;
// 图片地址 可选
string image=9;
}