yunque / pushmessage
There is no license information available for the latest version (v1.0.1) of this package.
socket通讯客户端
This package's canonical repository appears to be gone and the package has been frozen as a result.
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-04-05 19:01:27 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;
}