使功能多变的连接手机更具弹性

时间:2017-04-03 09:58:08

标签: ios http wifi lte 4g

在遇到连接不稳定的情况下,我遇到了从iOS应用到我的API建立弹性连接的问题。理想情况下,我希望通过以下方式使连接尽可能具有弹性。重新发送对API的请求。

更具体地说:

  • 传输正在使用HTTP
  • 响应是基于JSON的,通常只有几个KB
  • API托管于Heroku

处理这种“斑点连接”问题的合适算法方法是什么?似乎许多应用程序处理得很好,例如Discord上的语音频道或通过WhatsApp拨打电话。

我正在调查:

  • 取消和重新发送请求
  • 通过保持活动长轮询来“预热”HTTP连接,因为初始加密握手似乎很重
  • 并行发送多个请求

目标是尽可能地消除RTT。请求很小但应该快速通过,因为用户不必等待他们的响应。

很高兴知道其他人如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

用非常简单的术语来说:

  • TCP / IP是面向连接的 - 它设置端到端连接并实现可靠的传输,但可靠性是以更多开销为代价的
  • UDP / IP是无连接的 - 它不提前设置端到端连接或检查收到的已发送数据,因此可靠性较低但速度快且开销低

VoIP应用程序通常倾向于UDP用于语音部分 - 这是因为速度/延迟很重要,偶尔丢包也不是一个大问题。

在必须不丢失任何数据包的情况下,例如建立VoIP呼叫的信令,TCP或其他检查和重传丢失数据包的协议通常是首选。

请注意,上述情况有例外 - 例如,TCP通常比UDP更好地遍历防火墙,由于出于交通策略原因的安全性,可能会阻止防火墙,因此有时可以通过TCP发送VoIP语音至少部分行程。

听起来TCP可能是满足您需求的良好候选者 - 还有其他协议,例如SCTP(https://en.wikipedia.org/wiki/Stream_Control_Transmission_Protocol),但我不确定它们通常可以更快地显示为通信类型你形容。