来自Node后端的流二进制数据(使用FlatBuffers创建并在Android前端接收)

问题描述 投票:1回答:1

使用的技术:

在下面的问题中,“前端是指Android”和“后端是指Node.js”。

约束:

  1. 我们在发展中的市场中有农村用户,因此互联网速度可能很慢和/或抖动/不稳定。由于抖动,我们需要一种解决方案,在该解决方案中,我们可以使用传输的任何(如果不是全部)数据。
  2. 我们拥有相当大的数据(庞大的对象列表),我们无法简单地通过这些数据进行传输JSON(通过普通的REST API),直到下载完所有数据为止,我们什么也没得到(因为我们正在使用Retrofit并且其onResponse为未调用)。

目标:

  1. 将对象列表(在后端)转换为二进制数据。以便当我们在前端接收数据时,我们可以访问序列化数据而无需拆包。通过FlatBuffers实现。
  2. 当从前端。我想流式传输想要使用的数据(在实时)用户收到的任何数据(对象列表)(即使用户在传输过程中断开连接)。 我遇到问题在这里,因为我无法通过REST API实现此目标-改装组合。在此处需要有关基于触发器的内容的帮助流式传输。
  3. 将前端中的对象列表转换为Java对象,然后显示在用户界面中。我在这里使用FlatBuffer,因为它速度快且能够使用/序列化传输的任何对象。不需要整个数据传输完成。

我能够成功实现目标的第1步和第3步。但是,我无法整理步骤2。

请提出一种实现此目标的简便方法(从后端流到前端的二进制数据流)。如果我们可以在前端使用Retrofit(如果可能)来触发和流式传输,那就更好了。

java android node.js rest stream
1个回答
0
投票

通过差异方法实现:

  1. 在节点侧,使用fs.createReadStream功能进行流传输。
  2. 在Android方面,使用URLConnectionBufferedReaderInputStreamReader消费流。

P.S-无法通过改装来完成。

© www.soinside.com 2019 - 2024. All rights reserved.