首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ProtoBuf.js解码javascript中的Google协议缓冲区消息

使用ProtoBuf.js解码javascript中的Google协议缓冲区消息
EN

Stack Overflow用户
提问于 2015-05-20 18:38:44
回答 1查看 6.6K关注 0票数 4

我试图使用javascript (ProtoBuf.js)中的google协议缓冲区在MQTT上发送消息。

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

代码语言:javascript
复制
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 }"

现在,当我尝试下面的代码时,它并没有做任何事情。我在浏览器中也没有看到任何日志。

代码语言:javascript
复制
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

有人能告诉我我哪里出错了吗?

谢谢你一吨

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-21 17:59:27

据推测,这几行:

代码语言:javascript
复制
var dec = builder.build("Game");
var msg = dec.decode(messagegpb);

需要:

代码语言:javascript
复制
var Game = builder.build("Game");
var msg = Game.Cars.Car.decode(messagegpb);

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

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30357863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档