Articles of iphone

标题和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字节)。 有没有人见过这个?

我应该如何构build我的数据库和API服务器为基于回合的多人iPhone的棋盘游戏? (考虑nodejs,mongo,沙发等)

我正在为iPhone和最终Android开发基于回合的棋盘游戏。 我正在使用Appcelerator Titanium来开发它。 我的多人游戏devise与Words With Friends类似。 准备好后,用户轮stream使用,然后相应地更新对手的游戏板。 我的需求之一是有一个消息传递API,使得玩家的设备能够在移动之后相互更新游戏板的状态。 想用JSON来做这件事,并且在包含所有游戏棋子的位置的设备上保留一个JSON对象。 这是需要在本地设备上更新的对象,然后在移动完成后将更改发送给对手的设备。 过去,我已经为移动平台完成了API,为此我使用了PHP和MySQL,并在API服务器和移动设备之间来回发送JSON。 适用于低并发用户,通常非常规的应用程序。 希望这个会变得庞大;) 所以现在,我开始考虑持久套接字,而不是一个普通的httpd服务器,而不是我的新游戏。 我也认为,放弃大型LAMP堆栈可能是明智的,而且为了可扩展性和易于开发,更多地倾向于像Mongo / Couch – > node.js – > iPhone这样的数据stream。 我会坦白的说,这将是我第一次进入非sql数据库和node.js。 有兴趣听到别人在这方面的经验和经验,有更多的select/想法,以及我是否以正确的方式思考,或只是为自己头痛。

iPhone与Objective-C套接字通信与Socket.IO

我正在开发某种大型多人在线游戏。 我的解决scheme是服务器上的node.js socket.io。 我需要解决scheme来实现某种与socket.io通信的objective-c套接字,用于以stringforms发送和接收json对象。 我不会使用webkit的webkit。 有没有可能? 服务器将保持游戏状态,iPhone客户端将向服务器发送操作并接收服务器上的更改。

我应该直接连接到CouchDB的套接字并传递HTTP请求或使用node.js作为代理?

首先,这是我最初提出的问题 。 我使用Appcelerator Titanium来开发iPhone应用程序(最终也是Android)。 我通过使用Titanium的Titanium.Network.TCPSocket对象直接连接到CouchDB的端口。 我相信它利用了Apple SDK的CFSocket / NSStream类。 一旦连接,我只写: 'GET /mydb/_changes?filter=app/myfilter&feed=continuous&gameid=4&heartbeat=30000 HTTP/1.1\r\n\r\n' 直接到sockets。 它保持打开“永远”,并返回JSON数据,每当数据库更新并匹配filter和更改请求。 凉。 我想知道,可以这样直接连接到CouchDB的套接字,或者我可以更好地打开node.js套接字,也可以使用这个CouchDB node.js模块来处理通过node.js的CouchDB代理? 我主要关心的是性能。 我只是没有足够的经验与CouchDB知道是否点击其套接字和直接传递虚假的HTTP请求是好的做法或不。 寻找有关任何后果或替代build议的经验和意见。