在javascript中使用ProtoBuf.js解码Google协议缓冲区消息
Decoding a Google protocol buffer message in javascript using ProtoBuf.js
我正试图通过MQTT发送消息,利用javascript (ProtoBuf.js)中的google协议缓冲区
我能够使用以下代码对消息进行编码:
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
谁能指出我哪里错了?
Thanks a ton
大概是这样的:
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
捕获它们。
相关文章:
- 如何在Google柱状图中动态添加行/列
- Google/html5语音识别JavaScript SDK Chrome网络工具包SpeechRecognition
- 使用Google Visualization动态调用构造函数
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 是否可以控制获取哪些Google地图脚本(JavaScript API)
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- Google Adsense多次加载脚本
- 单击超链接时,如何使用Google Maps API v3缩放地图
- Google电子表格getValue([cell containing ])不返回制表符
- 实现一个建立在google.com之上的自定义搜索引擎
- 在文本区域POST后解码JSON
- 使用Google Maps API向标记添加多个字符
- Google 脚本:用于创建日历活动的脚本运行时不会出错,但不会执行任何操作
- 回调函数中传递参数的困难(Google Map API Markers)
- 在Chrome扩展内部输出Google API调用
- 如何使用Google Sheets API+Javascript阅读电子表格
- 如何使用javascript更改google repatcha的大小
- Google Chrome JSON.编码/解码数组
- 用Javascript解码Google Oauth2访问令牌
- 在javascript中使用ProtoBuf.js解码Google协议缓冲区消息