问题标签 [flatbuffers]

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 回答
716 浏览

c++ - 将额外字节填充到要通过网络发送的 flatbuffer 的缓冲区指针

请查看此代码的上下文。

我需要打包创建的 buffPtr 的大小(固定两个字节)。有没有不复制整个缓冲区的附加/偏移的首选方法?

我认为我无法将大小添加到架构中,因为收到后我应该知道大小而无需调用 getRootAsNormalizedLog。

有没有办法向结果缓冲区添加额外的字节?

0 投票
1 回答
607 浏览

java - 为什么 FlatBufferBuilder.dataBuffer 返回的缓冲区与 java.nio.ByteBuffer.wrap 不同?

我正在尝试通过网络将浮点数从 Windows 上用 c# 编写的程序发送到使用 flatbuffers 用 java 编写的 android 应用程序。

从 android 应用程序中接收到的字节,使用 java.nio.ByteBuffer.wrap 构建缓冲区。从此缓冲区中反序列化 Example 对象。然而,这会导致每个浮点数都设置为 0。

在下面的示例中显示了此行为。

为什么“example2”返回值0.0而不是20.0

这是我使用的架构:

这是显示行为的java代码:

输出:

0 投票
1 回答
134 浏览

flatbuffers - 我们如何在 C# 中为 xml Webservices 使用 Flatbuffers 库?

我们正在为 Android 和 Iphone 应用程序使用 XML Web Services。现在我们要优化那些WS来加速手机应用程序的性能。

谢谢

0 投票
1 回答
3486 浏览

c++ - Flatbuffers 验证器行为

如果这两个对象的模式中的表从相似的数据类型开始,是否有任何方法可以使用 flatbuffer 验证器验证其中包含 flatbuffer 结构的字节数组?

示例架构:

我目前的实验告诉我:

两个布尔标志 isaddTaskResponse 和 isaddTaskRequest 都是真的,它们的真实状态不取决于我发送的实际结构AddTaskResponseAddTaskRequest

0 投票
1 回答
425 浏览

java - 带有 HttpServletResponse 的零复制 byte[] 或 ByteBuffer

使用 Google 的 FlatBuffer 时,最终使用的类型是 a ByteBuffer(可以只包装 a byte[])。我将它与HttpServletResponse. 问题变成了 ServletsPrintWriter不提供byte[]ByteBuffer编写。

HttpServletResponse无需将ByteBuffer/复制byte[]到另一种类型即可从 an 输出的任何提示?

0 投票
1 回答
3868 浏览

c# - FlatBuffers:使用联合发送多种数据包类型

我将通过连接发送多种缓冲区类型。为简单起见,想象一下这样的模式:

我为 C++ 和 C# 生成所需的文件,并根据需要将它们包含在我各自的项目中。

这是我在 C++ 中编码事件的方式 - 这里是 EventOne 类型的事件:

请注意,我在创建 EventHolder 对象时遇到问题:我有一个类型为 FlatBuffers::Offset<MyEvents::EventOne> 的偏移量,但 CreateEventHolder 函数采用类型为 FlatBuffers::Offset<void> 的偏移量。

  • 这个过程(包含联合类型对象的表)是使用平面缓冲区发送多种数据包类型的正确方法吗?编辑:答案似乎是“是”
  • 我是否错过了 theEvent 的由内而外的编码步骤?编辑:不!它工作得很好。
  • 如果这个过程是正确的,我需要做什么来避免类型冲突?编辑:就像 Aardappel 所说,从Flatbuffers 编码然后解码 C++ 双数组 + 表 + 联合返回 junk,我只需要添加 .Union() 到偏移参数。

任何帮助,将不胜感激。FWIW,我在 C++ 中编码,并在那里进行测试解码,但通过 UDP 将数据发送到 C# 应用程序以在那里进行最终解码。为此,我对数据包进行了类型测试并进行了相应的解释。

更新:我找到了一个例子,看到我需要在 CreateEventHolder 中将 Union 函数添加到我的偏移量的末尾。我现在可以走了。

0 投票
1 回答
1845 浏览

c# - FlatBuffers:C++ 与 C# 中的编码,C# 端到端示例中的解码

想象一个模式:

对于状态消息“EXIT”,在 C++ 中我编码并通过电线发送,如:

对于相同的消息“EXIT”,我在 C# 中编码并通过网络发送,例如:

在我用 C# 编写的客户端应用程序中,我解码为:

  • 当我收到来自 C++ 应用程序的 EventStatus 消息时,它们会正确解码。
  • 当我从 C# 发送应用程序收到 EventStatus 消息时,它们会正确解码。
  • 当我转储从应用程序发送的缓冲区时,它们是(十进制):

  • C++ - 12 0 0 0 8 0 14 0 7 0 8 0 8 0 0 0 0 0 0 4 12 0 0 0 0 0 6 0 8 0 4 0 6 0 0 0 4 0 0 0 4 0 0 0 69 88 73 84 0 0 0 0

  • C# - 12 0 0 0 8 0 10 0 9 0 4 0 8 0 0 0 12 0 0 0 0 4 6 0 8 0 4 0 6 0 0 0 4 0 0 0 4 0 0 0 69 88 73 84 0 0 0 0

最初,来自 C# 发件人的消息没有正确解码 - 现在可以了。我对发件人进行了更改,所以可能没有重建。

  • 我有点困惑,接收到的 C++ 缓冲区和 C# 缓冲区不同,但它们正确解码为相同的结果。
  • 我的现实世界模式要复杂得多——我是否在 C# 端遵循正确的解码程序?
  • 我是否遵循正确的程序将 flatbuffer 减少到 Byte[] 以便在 C# 中通过线路发送?好像是我,但是好像有一段时间没用了......

任何输入表示赞赏。

0 投票
1 回答
494 浏览

protocol-buffers - 是否有任何 Thrift 风格的 RPC 系统允许回调?

在使用了几种不同的消息传递和 RPC 系统后,我得出的结论是,您最终总是需要传统的 RPC,推送某种类型的事件。否则,您不可避免地会遇到一些投票黑客。

例如,HTTP 最初只支持 RPC 样式的方法(GET 和 POST 立即返回响应)。人们意识到需要推送事件,因此使用长轮询来破解它。最终,通过Server-Sent Events解决了这个问题。

CoAP(基于 UDP 的轻量级 HTTP 版本)还通过向 GET 请求添加“监视器”选项来支持推送事件。这是一个非常优雅的解决方案。

但是这些都不是 Thrift 风格的 RPC,我的意思是你编写一个接口定义文件,并且有一些工具可以将该接口编译为你选择的语言的本机代码。此后,您几乎可以像调用本地程序一样调用远程程序。

所以我的问题是,是否有任何 Thrift 风格的 RPC 系统可以让您订阅推送事件并在事件到达时调用回调(或类似的)?

0 投票
1 回答
666 浏览

c# - Flatbuffer 缓冲区始终为空

我有一个架构:

为了清楚起见,这里是ServerToClientMessage.cs

我正在尝试通过 TCP 发送我的ServerToClientMessage. 当我使用 JSON 时这很好用,所以在其他地方不是问题。

我有一个FlatSerialize扩展方法,它应该序列化ServerToClientMessage并返回一个字节数组。然而,我buffer.Data的总是空的......它只是充满了零。我的ServerToClientMessage确实有数据 - 它确实有 MessageId 和 ImageBytes。

这是序列化扩展:

有谁知道为什么我buffer.Data的只是用零填充?

0 投票
2 回答
1906 浏览

javascript - How to use flatbuffer generated data in browser?

I'm trying to use flatbuffer in one of my web application. I've already stored those buffer data in one file (buffer_content.txt) by using following php code.

Through ajax I can get the buffer data from the server. Now I need to extract the original data from that buffer in JavaScript. But, I can't able to fig out how to do that.

Any idea, how to do this ?