我正在进行批量上传并使用 NSURLSession 在后台进行。 直到 iOS9 一切顺利,但 iOS10 有不同的行为:
如果我排队 100 个 POST 请求,它会将它们全部批处理到同一个套接字。
所以所有 100 个请求都在同一个套接字上并行发生,并在几分钟后超时。
在服务器端,我们使用 AWS ELB,我猜我可以从请求 header /ELB 设置中禁用此行为。服务器本身是 node.js。有什么建议吗?
编辑:
Http header Connection: keep-alive
可能是它。
但我无法更改它,我看到它使用 Charles 代理从 close
覆盖回 keep-alive
。
最佳答案
最终我们使用 http header Connection
解决了这个问题.
iOS 使用它的 Keep-Alive
选项,这意味着您可以在同一个套接字上发送多个请求。关闭流水线或设置 header 值都不能将其删除。 iOS强制它。 因此我们最终将其从服务器的响应中删除。它导致 iOS 为每个请求打开一个新的套接字。
这样我们就得到了与 NSURLSession
数量匹配的连接数量。允许我们在 iOS 10 和 11 的测试版后台上传大量大文件。
关于ios - 如何在 NSURLSession 中禁用每个套接字的多个请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46022851/