typescript Any.Pack

发布时间 2023-06-20 10:42:01作者: 00000000O
IMessage body;
UserLoginRequest req = new UserLoginRequest();
req.AuthToken = "8";

Request sy = new Request();
sy.Token = "hello";
sy.Body = Any.Pack(req);

byte[] bs = sy.ToByteArray();
string hexString = BitConverter.ToString(bs);

Debug.Log($"len:{bs.Length}");
Debug.Log(hexString);

  

 

import { readFileSync } from "fs"
import * as pb from "protobufjs"


let popContent = readFileSync("pop.json")
let popRoot = pb.Root.fromJSON(JSON.parse(popContent.toString()))
let UserRequest:pb.Type = popRoot.lookupType("ProtoSync.UserLoginRequest")
let UserMsg = UserRequest.create({ authToken: "8"})
let Userbuffer = UserRequest.encode(UserMsg).finish()

console.log(Userbuffer)

let pubContent:Buffer = readFileSync("proto.json")
let pubRoot:pb.Root = pb.Root.fromJSON(JSON.parse(pubContent.toString()))
let Request:pb.Type = pubRoot.lookupType("ProtoSync.Request")


// 创建包含 Userbuffer 的 Any 类型结构
// 创建 ByteBuffer 对象并写入 Uint8Array 数据
const byteBuffer = pb.util.newBuffer(Userbuffer.length);
byteBuffer.set(Userbuffer);

const anyValue = {
    type_url: "type.googleapis.com/ProtoSync.UserLoginRequest",
    value: Userbuffer,//c#里这里有个byteString类型,ts中没有,蛋疼
  };


//let reqMsg:pb.Message<{}> = Request.create({ token: "hello", body: UserMsg })
let reqMsg:pb.Message<{}> = Request.create({ token: "hello", body: anyValue })
//let reqMsg:pb.Message<{}> = Request.create({ token: "hello"})
let buffer:Uint8Array = Request.encode(reqMsg).finish()
console.log(`len:${buffer.length}`)
console.log(buffer)