iOS不会使用http保持活动状态。非常高的延迟

问题描述:

我想测试服务器的延迟,所以我发送了一个休息请求。 使用休息api客户端,我从桌面获得了大约500毫秒的延迟,但是当我在iOS模拟器(使用AFNetworking)上做同样的请求时,我得到1.8秒的延迟。iOS不会使用http保持活动状态。非常高的延迟

我的服务器发送保活头,我注意到,从我的电脑的第一个请求是一个类似的潜伏期为IOS的。 我如何让iOS荣誉保持活力或减少延迟? 由于我正在制作实时应用程序,因此我必须具有低延迟。在同一台计算机上,我的休息客户端比iOS快3倍。我该如何解决这个问题?

编辑:: 我注意到,在禁用HTTPS从我的服务器支持,潜伏期为1秒。对我来说,很显然iOS没有使用保持活力的问题。

我使用wireshark监视网络活动。下面是以大约1秒为间隔发出的两个http请求的图片: enter image description here

可以看出,加密握手正在进行两次。

使用我的REST客户端,这是它以2秒的间隔相同的http请求的样子:

enter image description here

没有看到任何代码,很难肯定地说发生了什么事,但要确保:

  • 的请求是在同一个会话。每个会话使用单独的基础连接,所以如果会话消失,连接也会消失。
  • 这些请求使用相同的认证凭证(如果适用)。

此外,请尝试启用HTTPShouldUsePipelining。如果同一服务器有多个请求正在运行,则连接将至少(至少)最后一个到达时才会关闭,因此即使操作系统正在积极管理电源,也可能有助于连接。

+0

HTTPShouldUsePipelining使HTTP流水线(即发送接收响应之前后续请求),这比保活(重用建立连接)不同的事情。 您可以通过[使用HTTP流水线的缺点(s)了解更多信息?](http://*.com/a/14813048/779346) –

+0

您是对的。我的错。我修改了我的答案。 – dgatwood