typescript Any.Pack
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)