Tag: nsurlconnection

Socket.io在本地UIWebView中无法升级

我已经好几天没有运气了。 任何帮助非常感谢 我意识到这是一个节点问题和iOS问题之间的交叉 – 事先道歉。 我正在尝试使用UIWebView(不是phonegap)在本地iOS应用程序中显示使用HTML5 / JS的简单协作白板。 JS使用socket.io连接到一个Node.js服务器来进行实时的涂鸦。 在浏览器中运行HTML / JS,包括移动Safari浏览器,套接字工作的很好。 但是,当相同的代码在webView中本机运行时,它将连接到服务器,但不会完成升级过程,因此服务器会将连接降级到轮询。 行为与NGINX代理是否正在被使用(它们被正确转发)以及是否使用ws:或wss:相同。 这是一个问题,因为实时绘图创build了太多的传输请求,导致应用程序缓慢,绘图不良,以及socket.io库引发错误: 在“socket.io/socket.io.js 4720行”错误:调用了太多次之后。 我有一个NSURLProtocol的子类来捕获和查看socket.io请求。 我可以修改请求,使服务器开心,但我不知道要修改什么。 输出,显示request.URL.absoluteString,request.allHTTPHeaderFields和request.HTTPBody,以及响应。 z2015-02-13 03:36:07.424 DrawApp[2286:553479] ||————————————————————— 2015-02-13 03:36:07.426 DrawApp[2286:553479] Request URL: http://192.168.0.16:8081/socket.io/socket.io.js 2015-02-13 03:36:07.432 DrawApp[2286:553479] RequestHead: { Accept = "*/*"; Referer = "http://192.168.0.16:8081/mobilechat/16074204562:troy"; "User-Agent" = "Mozilla/5.0 (iPad; CPU OS 8_1_3 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like […]

标题和POST正文之间的随机延迟

我们使用NSUrlConnection sendAsynchronousRequest向我们的Node JS服务器发送简单的POST请求。 通过分析tcpdump,我们注意到有时请求头和请求体被分成两个独立的TCP包。 NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; [request setURL:[NSURL URLWithString:url]]; [request setTimeoutInterval:3]; [request setHTTPMethod:@"POST"]; [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; [request setValue:@"application/json" forHTTPHeaderField:@"Content-type"]; [request setHTTPBody:postData]; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler: ^(NSURLResponse *response, NSData *POSTReply, NSError *error) { }]; 问题是,偶尔头文件被发送到服务器,这将打开一个连接到我们的API,然后几秒钟后身体包发送。 我们看到头和身体之间的延迟> 1秒,服务器端每百次请求就会随机发生一次。 这是我们API的最大延迟来源。 对于大多数请求,标题和正文大小相同(每个200字节)。 有没有人见过这个?