【问题标题】:Best practice for handling data connexion interruption when sending data every second [closed]每秒发送数据时处理数据连接中断的最佳实践[关闭]
【发布时间】:2016-08-02 10:40:44
【问题描述】:

我有一个移动应用程序,它每秒检索纬度、经度、速度……等等。

此应用程序将这些值存储在 .csv 文件中,并使用 DATA 连接将它们发送到远程服务器(使用 JSON 格式化它们)。服务器(Apache、MySQL)检索数据并将其放入数据库中。然后,用户可以在网站上进行连接,例如使用 GM 生成跟踪,或生成统计数据(平均速度...)。

但有时,由于地形(山脉)的原因,数据连接会失败。因此,即使移动设备继续存储数据,服务器也不再接收数据。

当数据连接再次工作时,到目前为止,服务器接收到最后一个位置。所以这两个位置之间存在差距。

发送适当数据以填补这一空白的最佳方式是什么?

  • 在应用端,始终测试数据是否丢失,如果丢失,将其存储在单独的 csv 文件中?
  • 然后发送这个 csv 文件?
  • 还是发送一个 JSON 数组?

【问题讨论】:

  • 您选择在应用程序和服务器之间发送数据的格式完全取决于您,并且通常由您最容易使用的方式决定。在一般情况下,对于这个问题,CSV 既不比 JSON 好也不差,因此您的问题没有客观的“正确”答案。投票结束时“主要基于意见”。

标签: android mysql json csv


【解决方案1】:

如果有一个应用程序做同样的事情(除了我使用的是 db 而不是 csv),我建议您将数据打包发送。每秒发送数据会耗尽您的电池电量。我根据需要每分钟或更长时间发送一次数据。

对于您的问题,在每次调用 (HTTP POST) 时,我都会创建一个 JSONArray,其中包含要发送的每个位置。我用状态标记数据库中的数据以知道哪个已正确发送(0 = 未发送,1 = 已发送)。状态当然取决于请求的 StatusCode。

该数据库是通过侦听 GPS 跟踪器的服务实时填充的,状态为 0。

在下一次调用时,我将选择所有未发送的数据。我更喜欢使用 JSON 格式,因为我的服务器知道如何读取它,但这更像是一种选择而不是优先级。

【讨论】:

    【解决方案2】:

    我认为这种情况没有“通用”解决方案,大多数时候您必须找到最适合您的解决方案,但我会做以下事情,具体取决于服务器端实现:

    1. 创建一个存储所有信息的对象,例如可以序列化为 json 并存储在本地的“位置”数组。

    2. 在触发请求之前,更新存储数据的对象并保存。

    3. 当您触发请求时,请使用您的自定义对象作为服务器的“数据”。

    4. 如果请求成功,清除所有存储的数据(已经发送)。

    5. 如果请求失败,什么都不做……下次发送数据。

    如果您想更精确,您可以检查请求错误的原因,如果不是超时而是服务器问题,您可以将数据集标记为失败并使用计数器进行最大重试在失败的数据上,如果达到最大重试次数,删除失败的数据,可能是你这边的数据结构错误,可能会阻止向服务器发送好的数据。

    【讨论】:

    • 数组不是解决方案,如果应用程序崩溃,这些数据可能会丢失,如果您处于死区数小时,您的内存将饱和(不确定应用程序是否会被杀死或崩溃)。
    • @AxelH 该数组不会在内存中,也不会丢失,因为更新时它将在本地保存,CVS,SharedPreferences 作为 JSON,DB 等等。这只是一个词,所以 SO 知道这将是一个 List 的数据,而不是单个对象。
    • 好的,不清楚你是否存储了这个,因为你说的是​​“位置”数组(存储在本地,你设备上的所有东西都是本地的;))是的,和我的概念一样,我只保留数据,主要是为了在地图上显示位置,同时也是为了防止删除在创建 JSON 和服务器响应之间存储的未发送数据(只是说,这很痛苦......理解数据上的差距;))
    • @AxelH 我也同意你的方法,这就是我赞成它的原因,你对在 JSON 创建和 API 响应之间删除数据是正确的,但这取决于实现等我说,这个问题没有通用的解决方案,它必须是符合 SO 要求的解决方案。
    • 感谢您的解释,它帮助很大:)
    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 2019-07-14
    • 2013-07-07
    • 2013-09-03
    • 2016-04-06
    • 2018-08-23
    • 1970-01-01
    相关资源
    最近更新 更多