使用的技术:
在下面的问题中,“前端是指Android”和“后端是指Node.js”。
限制条件:
我们在发展中的市场中有农村用户,因此互联网速度可能很慢和/或
抖动/不稳定。由于抖动,我们需要一种解决方案,在该解决方案中,我们可以使用传输的任何(如果不是全部)数据。
我们有相当大的数据(庞大的对象列表),我们无法简单地通过这些数据进行传输
JSON(通过普通的REST API),因为在下载整个数据之前,
我们什么也没得到(因为我们使用的是Retrofit并且其onResponse为
不被称为)。
目标:
将对象列表(在后端)转换为二进制数据。以便
当我们在前端接收数据时,我们可以访问
序列化数据而无需拆包。通过FlatBuffers实现它。
触发时通过流传输此数据
前端。我想流式传输想要使用的数据(在
实时)用户收到的任何数据(对象列表)(即使
用户在传输过程中断开连接)。我有问题
在这里,因为我无法通过REST API实现此目标-改装
组合。在此处需要有关基于触发器的内容的帮助
流媒体。
要将前端中的对象列表转换为Java对象,并
显示在用户界面中。我在这里使用FlatBuffer,因为它速度快且
能够使用/序列化传输的任何对象。不需要
整个数据传输完成。
我能够成功实现目标的第1步和第3步。但是,我无法整理步骤2。
请提出实现此目标的简便方法(从后端到前端流二进制数据)。如果我们可以在前端使用Retrofit(如果可能)来触发和流式传输,那就更好了。
最佳答案
通过差异法实现:
在节点端,使用fs.createReadStream
函数进行流传输。
在Android方面,使用URLConnection
,BufferedReader
,InputStreamReader
消耗流。
附注-没有任何方法可以通过翻新来实现。