问题标签 [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.
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
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 的新手,所以我可能做错了什么。
提前致谢!
javascript - 带有签名的 4 字节 int 的 protobuf 消息前缀
我正在使用向其发送 protobuf 对象的 Websocket API。
文档说:
服务器对二进制数据使用 Big Endian 格式。来回发送的消息需要一个有符号的 4 字节 int 的消息大小,作为消息的前缀
因此有效负载应该是一个 4 字节的 int,其中包含消息大小,然后是消息本身。
我这样设置消息:
我将如何为signed 4 byte int
包含消息大小的 a 添加前缀?
注意:console.log(message)
将以下内容打印到控制台:
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
谢谢你。
javascript - 在 JavaScript 中获取 Protobuf 消息的完全限定路径
我正在尝试在 JavaScript 中获取我的 Protobuf 消息类型的完全限定路径。例如,给定以下文件:status.proto
使用 protoc 编译后,我可以执行以下操作:
但是,我怎样才能得到这条消息的完全限定路径呢?我想要一个字符串my.messages.proto.Status
,但我似乎找不到任何可能的 API。我基本上想要 C++ 函数的等价物message.GetDescriptor()->full_name()
。
如果我这样做console.log(status);
,我会看到打印出来的内容,例如:
所以,信息就在那里,但只是不知道如何访问它。这在带有 Protobuf 的 JavaScript 中是否可行?
javascript - 如何在nodejs中将对象转换为protobuf数据
如果我有如下定义的 proto3 消息
protoc
with --js_out
and会生成类似的--ts_out
dts
通过方法将Log
类转换为对象 很简单。toObject
但是要将对象转换为类,我需要手动设置每个字段。
有没有更简单的方法来执行这样的任务?
protocol-buffers - 如何实际看到 protobuf 在网络或文件中传递一些字节?
我是 protobuf 的新手,想通过网络或文件传递一些数据来试验它,例如
字节可以由 Python / Ruby 写入文件,然后由 JavaScript 读回吗?(或者可以全部用 JavaScript 编写)。
我认为能够在本地网站上传递它可能要复杂得多?如果是这样,将其写入文件并能够读回就可以了。怎么可能做到?
protocol-buffers - 如何将一系列消息写入文件并使用 protobuf (protobuf.js with proto3) 将它们读回?
我尝试了该示例,并且能够使一条消息起作用:
我对这个问题的回答中有一个完整的解决方案。
protobuf 是否能够让我们将多种消息类型写入文件并读回它们?(或通过网络,一条接一条的消息)。
而且我认为强大的是,我们可以“混合和匹配”消息类型?(意思可以是Message1,然后是Message2两三遍,完全可以是动态的?)
所以假设我们有
我只是按照 protobufjs 网站中的示例,写入AwesomeMessage
一个文件,然后创建AwesomeNameMessage
并将其连接到同一个文件。
现在是否可以在不知道数据文件中有哪些消息类型的情况下read.js
写和读回消息?
我写的时候卡住了read.js
问题是,我不知道它是AwesomeMessage
or AwesomeNameMessage
,那么我们该如何进行呢?protobuf 可以按照上面的方式工作,还是我们需要定义所有消息类型(可能是 1000 个),然后将它们全部封装到一个消息类型中,例如GenericMessage
, 并以某种方式用于oneof
声明下一条消息可以是任何消息类型(或制作每条消息optional
)?它是如何工作的?
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 描述符这样的句子。
c++ - Protobuf:将 C++ 序列化/反序列化为 Js
我正在使用 protobuf 从 Cpp 向 Js 发送/接收二进制数据,反之亦然,我正在使用 QWebChannel 与 HTML 客户端进行通信。
问题:如何反序列化从Js序列化并发送的cpp中的二进制数据?
以下我尝试:
Cpp中的反序列化 - 不工作