问题标签 [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.
c++ - 将额外字节填充到要通过网络发送的 flatbuffer 的缓冲区指针
请查看此代码的上下文。
我需要打包创建的 buffPtr 的大小(固定两个字节)。有没有不复制整个缓冲区的附加/偏移的首选方法?
我认为我无法将大小添加到架构中,因为收到后我应该知道大小而无需调用 getRootAsNormalizedLog。
有没有办法向结果缓冲区添加额外的字节?
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代码:
输出:
flatbuffers - 我们如何在 C# 中为 xml Webservices 使用 Flatbuffers 库?
我们正在为 Android 和 Iphone 应用程序使用 XML Web Services。现在我们要优化那些WS来加速手机应用程序的性能。
谢谢
c++ - Flatbuffers 验证器行为
如果这两个对象的模式中的表从相似的数据类型开始,是否有任何方法可以使用 flatbuffer 验证器验证其中包含 flatbuffer 结构的字节数组?
示例架构:
我目前的实验告诉我:
两个布尔标志 isaddTaskResponse 和 isaddTaskRequest 都是真的,它们的真实状态不取决于我发送的实际结构AddTaskResponse
或AddTaskRequest
。
java - 带有 HttpServletResponse 的零复制 byte[] 或 ByteBuffer
使用 Google 的 FlatBuffer 时,最终使用的类型是 a ByteBuffer
(可以只包装 a byte[]
)。我将它与HttpServletResponse
. 问题变成了 ServletsPrintWriter
不提供byte[]
或ByteBuffer
编写。
HttpServletResponse
无需将ByteBuffer
/复制byte[]
到另一种类型即可从 an 输出的任何提示?
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 函数添加到我的偏移量的末尾。我现在可以走了。
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# 中通过线路发送?好像是我,但是好像有一段时间没用了......
任何输入表示赞赏。
protocol-buffers - 是否有任何 Thrift 风格的 RPC 系统允许回调?
在使用了几种不同的消息传递和 RPC 系统后,我得出的结论是,您最终总是需要传统的 RPC,并推送某种类型的事件。否则,您不可避免地会遇到一些投票黑客。
例如,HTTP 最初只支持 RPC 样式的方法(GET 和 POST 立即返回响应)。人们意识到需要推送事件,因此使用长轮询来破解它。最终,通过Server-Sent Events解决了这个问题。
CoAP(基于 UDP 的轻量级 HTTP 版本)还通过向 GET 请求添加“监视器”选项来支持推送事件。这是一个非常优雅的解决方案。
但是这些都不是 Thrift 风格的 RPC,我的意思是你编写一个接口定义文件,并且有一些工具可以将该接口编译为你选择的语言的本机代码。此后,您几乎可以像调用本地程序一样调用远程程序。
所以我的问题是,是否有任何 Thrift 风格的 RPC 系统可以让您订阅推送事件并在事件到达时调用回调(或类似的)?
c# - Flatbuffer 缓冲区始终为空
我有一个架构:
为了清楚起见,这里是ServerToClientMessage.cs
:
我正在尝试通过 TCP 发送我的ServerToClientMessage
. 当我使用 JSON 时这很好用,所以在其他地方不是问题。
我有一个FlatSerialize
扩展方法,它应该序列化ServerToClientMessage
并返回一个字节数组。然而,我buffer.Data
的总是空的......它只是充满了零。我的ServerToClientMessage
确实有数据 - 它确实有 MessageId 和 ImageBytes。
这是序列化扩展:
有谁知道为什么我buffer.Data
的只是用零填充?
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 ?