gpt4 book ai didi

iphone - 使用 NSURLConnection 进行长轮询

转载 作者:太空狗 更新时间:2023-10-30 03:19:13 24 4
gpt4 key购买 nike

我正在开发一个 iPhone 应用程序,它将使用长轮询通过 HTTP 将事件通知从服务器发送到客户端。在服务器上打开连接后,我发送了一小段代表事件的 JSON,当它们发生时。我发现 -[NSURLConnectionDelegate connection:didReceiveData] 直到我关闭连接后才被调用,无论我在创建 NSURLRequest 时使用的缓存设置如何。我已验证服务器端是否按预期工作 - 第一个 JSON 事件将立即发送,后续事件将在发生时通过网络发送。有没有一种方法可以使用 NSURLConnection 在这些事件发生时接收它们,或者我是否需要转而使用 CFSocket API?

我开始致力于集成 CocoaAsyncSocket,但如果可能的话我更愿意继续使用 NSURLConnection,因为它更适合我基于 REST/JSON 的 Web 服务结构的其余部分。

最佳答案

NSURLConnection 将在下载数据时缓冲数据,并使用 didReceiveData 方法将其全部返回给您。 NSURLConnection 类无法区分网络延迟和数据中的故意拆分。

您可能需要使用较低级别的网络 API,如您提到的 CFSocket(您可以访问来自网络接口(interface)的每个字节,并且可以区分有效负载的两个部分),或者您可以看看像 CURL 这样的图书馆看看那里有什么类型的输出缓冲/非缓冲。

关于iphone - 使用 NSURLConnection 进行长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1120606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com