在Android中订购http API调用

时间:2015-04-16 14:32:15

标签: android http android-volley

首先让我解释一下我的问题:

我们正在使用HTTP REST协议来传输聊天消息。对于聊天消息,消息的排序至关重要。由于HTTP是无状态协议,因此我们观察到服务器上的消息是无序接收的。

例如,如果我们发送A,B和C - 在服务器上收到的订单可以是C,B和A.

有没有办法解决这个问题?我不确定是否可以在Android中订购HTTP请求。即使我们尝试这样做,也可能会降低其效率,因为一次只能执行一个HTTP请求。

有没有既定的模式来解决这个问题?

2 个答案:

答案 0 :(得分:2)

他们以不可预测的顺序到达的原因是因为这是网络的本质。数据包通过不同的路由点传输,您无法强制它们按顺序排列。即使您按顺序发送,也不能保证按顺序送达。 但好消息是,您可以通过几种不同的方式实现您的目标。

  1. 在提交下一条消息之前,您可以等待服务器回复OK。这将确保订单,但您将失去多线程。
  2. 更好的解决方案是使用order_id或时间戳标记每条消息。然后服务器将它们按顺序排列。

答案 1 :(得分:1)

在我的情况下,我为每个请求分配了时间戳,然后将它们保存在我的数据库中。用户可能会看到他们的消息无序,特别是当他们聊得很快时。但是当它们刷新时,服务器将根据注册的时间戳返回有序列表。