【发布时间】:2016-06-10 23:54:59
【问题描述】:
我正在尝试将来自服务器端(base64 字符串)的 protobuf 消息解码为 javascript 对象。用于解码protobuf.js。
正如医生建议的那样:
var builder = ProtoBuf.newBuilder({ convertFieldsToCamelCase: true });
var YourMessage = builder.build("YourMessage");
var buffer = ...; // E.g. a buffer received on a WebSocket
var myMessage = YourMessage.decode(buffer);
...
var b64str = ...; // E.g. a string fetched via AJAX
var myMessage = YourMessage.decode64(b64str);
这就是我尝试的方式(数据 - base64 字符串):
var proto = dcodeIO.ProtoBuf;
var buffer = dcodeIO.ByteBuffer;
var b = buffer.wrap(data,"binary");
var builder = proto.newBuilder({ convertFieldsToCamelCase: true });
builder.define("Events");
var message = builder.build("Events");
var result = message.decode(b); //also try to decode base64 string - message.decode64(data);
我得到错误
解码/decode64 未定义
【问题讨论】:
-
我看不到你在 proto 文件或定义你的 protobuf 模式的文本中加载的代码。你应该有一个像
ProtoBuf.loadProtoFile("tests/example1.proto", builder);这样的行告诉它你的 .proto 定义在哪里。这将解释构建器不构造消息以及您获得的空值 -
@PhilipPryde 谢谢,我丢失了描述符。
-
那对你有用吗?如果是这样,我会把我的评论撞到一个答案......
-
@PhilipPryde 是的,当然
标签: javascript protocol-buffers protobuf.js