问题标签 [protobuf.js]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1044 浏览

apache-kafka - Kafka Protobuf 控制台消费者序列化异常

我有一个关于#protobuf #serialization 的问题,它发生在#nodejs 和#apache #kafka 中,由#confluent 平台在一个社区中运行。

我使用 google protobuf 或 protobufjs 序列化数据,然后使用 kafkajs 将其发送到 kafka。但是,当我提交数据时,kafka-protobuf-console-consumer 给了我一个序列化异常。请检查源代码并帮助我。 https://github.com/smhmayboudi/kafka-protobuf-console

0 投票
1 回答
387 浏览

typescript - 当它们具有相同的名称时,如何强制打字稿将参数解释为命名空间而不是类 - gRPC

抱歉标题太长了...

我正在用 gRPC 和 typescript 实现一个简单的 crud 小系统,我的问题是:自动生成的文件为我的每个参数创建一个类和一个类型protoFile,例如:UserId 参数生成一个带有 getUserId 等的类,以及一个带有UserId 的类型。

问题是当我尝试在我的方法中使用该方法时client,打字稿需要一个类作为参数而不是类型。

所以而不是getUsersById({id: 1}, callback)......它要求我做getUsersById(new UserId)

用户原型:

UserServiceClientPb.ts (Protobuf 生成) - 函数定义

user_pb.d.ts (Protobuf Generated) - 定义类型和类:

客户端.Vue:

参数 userId 引发以下错误:

'{ id: number; 类型的参数 }' 不可分配给“UserId”类型的参数。键入'{ id:数字;}' 缺少来自“UserId”类型的以下属性:getId、setId、serializeBinary、toObject 和另外 8 个。Vetur(2345)

在我看来,打字稿推断出getUserById第一个参数是类型Class UserId而不是来自命名空间 UserId的类型。

有什么我可以做的吗?由于它是自动生成的,我觉得它应该正确解释吗?我在搞砸别的事情吗?我是 gRPC 的新手,所以我可能做错了什么。

提前致谢!

0 投票
1 回答
114 浏览

javascript - 带有签名的 4 字节 int 的 protobuf 消息前缀

我正在使用向其发送 protobuf 对象的 Websocket API。

文档说:

服务器对二进制数据使用 Big Endian 格式。来回发送的消息需要一个有符号的 4 字节 int 的消息大小,作为消息的前缀

因此有效负载应该是一个 4 字节的 int,其中包含消息大小,然后是消息本身。

我这样设置消息:

我将如何为signed 4 byte int包含消息大小的 a 添加前缀?

注意:console.log(message)将以下内容打印到控制台:

0 投票
1 回答
272 浏览

typescript - 尝试在 Typescript 中设置 protobuf Map 条目

我有以下 protobuf 消息:

在打字稿中,我试图根据看起来像这样的打字稿映射来设置 protobuf 消息的映射条目。

我尝试遍历映射对象中的条目并以这种方式设置映射条目。

我收到错误“TypeError:b.toArray 不是函数。” 知道如何转换/序列化/打包每个打字稿映射条目,以便将其设置在 protobuf 中吗?我在几个地方找了一些没有运气的例子。

https://developers.google.com/protocol-buffers/docs/proto3#any https://developers.google.com/protocol-buffers/docs/proto3#maps

谢谢你。

0 投票
0 回答
111 浏览

javascript - 在 JavaScript 中获取 Protobuf 消息的完全限定路径

我正在尝试在 JavaScript 中获取我的 Protobuf 消息类型的完全限定路径。例如,给定以下文件:status.proto

使用 protoc 编译后,我可以执行以下操作:

但是,我怎样才能得到这条消息的完全限定路径呢?我想要一个字符串my.messages.proto.Status,但我似乎找不到任何可能的 API。我基本上想要 C++ 函数的等价物message.GetDescriptor()->full_name()

如果我这样做console.log(status);,我会看到打印出来的内容,例如:

所以,信息就在那里,但只是不知道如何访问它。这在带有 Protobuf 的 JavaScript 中是否可行?

0 投票
0 回答
157 浏览

javascript - 如何在nodejs中将对象转换为protobuf数据

如果我有如下定义的 proto3 消息

protoc with --js_outand会生成类似的--ts_outdts

通过方法将Log类转换为对象 很简单。toObject但是要将对象转换为类,我需要手动设置每个字段。

有没有更简单的方法来执行这样的任务?

0 投票
1 回答
207 浏览

protocol-buffers - 如何实际看到 protobuf 在网络或文件中传递一些字节?

我是 protobuf 的新手,想通过网络或文件传递一些数据来试验它,例如

字节可以由 Python / Ruby 写入文件,然后由 JavaScript 读回吗?(或者可以全部用 JavaScript 编写)。

我认为能够在本地网站上传递它可能要复杂得多?如果是这样,将其写入文件并能够读回就可以了。怎么可能做到?

0 投票
1 回答
80 浏览

protocol-buffers - 如何将一系列消息写入文件并使用 protobuf (protobuf.js with proto3) 将它们读回?

我尝试了该示例,并且能够使一条消息起作用:

我对这个问题的回答中有一个完整的解决方案。

protobuf 是否能够让我们将多种消息类型写入文件并读回它们?(或通过网络,一条接一条的消息)。

而且我认为强大的是,我们可以“混合和匹配”消息类型?(意思可以是Message1,然后是Message2两三遍,完全可以是动态的?)

所以假设我们有

我只是按照 protobufjs 网站中的示例,写入AwesomeMessage一个文件,然后创建AwesomeNameMessage并将其连接到同一个文件。

现在是否可以在不知道数据文件中有哪些消息类型的情况下read.js写和读回消息?

我写的时候卡住了read.js

问题是,我不知道它是AwesomeMessageor AwesomeNameMessage,那么我们该如何进行呢?protobuf 可以按照上面的方式工作,还是我们需要定义所有消息类型(可能是 1000 个),然后将它们全部封装到一个消息类型中,例如GenericMessage, 并以某种方式用于oneof声明下一条消息可以是任何消息类型(或制作每条消息optional)?它是如何工作的?

0 投票
1 回答
353 浏览

javascript - 我们如何转换 .proto 文件和 JSON 描述符?

我想将 .proto 文件转换为 JSON 描述符。

.proto 文件是这样的: https ://github.com/protobufjs/protobuf.js/blob/master/google/protobuf/type.proto

JSON 描述符是这样的: https ://github.com/protobufjs/protobuf.js/blob/master/google/protobuf/type.json

我想在 bigquery udf 上使用 protobuf 和使用 bq-udf-protobuf 的原因。 https://github.com/salrashid123/bq-udf-protobuf 所以,我想我需要为我的 SQL 准备像 JSON 描述符这样的句子。

0 投票
1 回答
217 浏览

c++ - Protobuf:将 C++ 序列化/反序列化为 Js

我正在使用 protobuf 从 Cpp 向 Js 发送/接收二进制数据,反之亦然,我正在使用 QWebChannel 与 HTML 客户端进行通信。

问题:如何反序列化从Js序列化并发送的cpp中的二进制数据?

以下我尝试:




Cpp中的反序列化 - 不工作