gpt4 book ai didi

javascript - 使用 ProtoBuf.js 在 javascript 中解码 Google Protocol Buffer 消息

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:10 25 4
gpt4 key购买 nike

我正在尝试使用 javascript (ProtoBuf.js) 中的谷歌 Protocol Buffer 通过 MQTT 发送消息

我能够使用以下代码对消息进行编码:

var ProtoBuf = dcodeIO.ProtoBuf;
var builder = ProtoBuf.loadProtoFile("./complex.proto"),
Game = builder.build("Game"),
Car = Game.Cars.Car;
var car = new Car({
"model" : "Rusty",
"vendor" : {
"name" : "Iron Inc.",
"address" : {
"country" : "USa"
}
},
"speed" : "FAST"
});
var buffer = car.encode();
console.log(buffer);
var messagegpb = buffer.toBuffer();
console.log(messagegpb ); //This prints "ArrayBuffer { byteLength: 29 }"

现在进行解码,当我尝试以下操作时,它什么也没做。我在浏览器中也看不到任何日志。

var dec = builder.build("Game"); //nothing after this line gets executed
var msg = dec.decode(messagegpb);
console.log(msg);

这是我正在使用的 .proto 文件的链接。 https://github.com/dcodeIO/ProtoBuf.js/blob/master/tests/complex.proto

谁能指出我哪里出错了?

非常感谢

最佳答案

大概是这些行:

var dec = builder.build("Game");
var msg = dec.decode(messagegpb);

需要:

var Game = builder.build("Game");
var msg = Game.Cars.Car.decode(messagegpb);

也就是说,您需要指定要解码的类型。

可能您尝试调用 dec.decode 时抛出了一个异常,表明 decode 方法不存在。您应该已经能够在错误控制台上看到这些异常,或者使用 try/catch 捕获它们。

关于javascript - 使用 ProtoBuf.js 在 javascript 中解码 Google Protocol Buffer 消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30357863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com