Jul*_*svM 3 http keep-alive long-polling
我正在进行一项测试,检查与 Websockets 相比,HTTP 长轮询对 iPhone 电池性能的影响程度。基本上我拥有的是一个带有 Express 服务器的 Node.js,它每隔 0.5 或 10 秒向 iPhone 发送一个随机字符串。我检查了 Chrome 中的消息,可以看到存在 keep-alive 标头。我知道 keep-alive 是自 HTTP/1.1 以来的默认功能。据我了解,TCP 连接将保持打开状态并可用于管道传输,当我每 0.5 秒从服务器发送 ping 时,情况肯定如此。但是当我每10秒发送一次时,连接会在这段时间关闭吗?
我如何知道连接打开了多长时间?这似乎是进行测试时要记住的关键部分。
当 TCP 连接打开时,HTTP 握手是否仍会进行?
AFAIK,在 HTTP 1 中,如果客户端没有先发送请求,服务器就无法将响应发送回客户端。这听起来可能与你的问题无关,但请耐心听我说。
标Connection: keep-alive头告诉客户端,can如果他愿意,它可以重用该连接,而不是它must。客户端可以随时决定关闭它,这完全取决于客户端库的实现,并且您没有任何保证。
强制客户端不关闭连接的唯一方法是不完成响应。唯一的方法是发送带有 a 的响应Transfer-Encoding: chunked,并且永远不要发送最后的块(这有一些严重的警告,例如客户端上的缓冲区溢出......)。
所以回答你的2点:
| 归档时间: |
|
| 查看次数: |
3815 次 |
| 最近记录: |