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

This package is not auto-updated.

Last update: 2024-04-20 14:31:12 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;
}