gpt4 book ai didi

ios - POST 请求花费的时间超过超时导致重复

转载 作者:可可西里 更新时间:2023-11-01 02:54:07 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序,每次事务完成时,我都会将事务POST 到 API。从服务器获得 200 响应代码 后,我更新交易的属性:

newTransaction.Synced = true

如果网络连接断开,我还会POST每个事务,其中 Synced = false 当 Reachability 检测到网络连接时。

在完美的网络条件下,这很有效。然而,当我在我的 iPad 上启用 Network Link Conditioner 并将丢包率设置为 40% 时,我开始在我的服务器上看到重复的事务。我假设正在发生的事情是,由于丢包率高,发送我的请求并从服务器获得响应所花费的时间超过 30 秒(请求的客户端超时)。

为了证实这一点,我让我的 API 为每个 Web 请求休眠 40 秒,并禁用网络链接调节器。正如预期的那样,iOS 应用从不Synced 属性设置为true,因为它在收到响应之前超时。然而,服务器仍然为每次 iOS 应用程序启动或获得网络连接时生成的每个 POST 请求创建实体。

处理这种情况以防止出现重复的最佳方法是什么?我确实考虑过将 GUID 添加到事务中,然后对 API 进行编码,以便在 GUID 已经存在的情况下不重新添加事务。然而,另一方面是 iOS 应用程序永远不会知道交易已成功同步。有没有更好的方法来处理这个问题?也许是服务器也遵守的请求超时?

最佳答案

您将 GUID 分配给事务的想法很好,但您可能需要在客户端(浏览器内存)维护一个表,该表将保存您对服务器所做的所有调用的记录,但从未收到回复。

关于ios - POST 请求花费的时间超过超时导致重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422727/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com