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

使用ProtoBuf.js在javascript中解码Google协议缓冲区消息,javascript,protocol-buffers,Javascript,Protocol Buffers,我试图使用javascript(ProtoBuf.js)中的google协议缓冲区通过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",

我试图使用javascript(ProtoBuf.js)中的google协议缓冲区通过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文件的链接

有人能告诉我哪里出了问题吗


非常感谢,大概是以下几行:

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

捕获它们,非常感谢Kenton。事实上我发现了这个问题。但现在面临更大的问题。我能够解码这条消息,但是当我从一个由java客户端编码的websocket接收到一条消息时,解码就不起作用了。你知道吗?非常感谢。基本上这就是我现在面临的问题。