Cocos2d-x ios 下http请求的另一种实现

简单描述下需求:游戏要加入事件log,比如玩家升到10级;创建角色;或是,触发这些事件后要求客户端忘后台抛送一条log信息。一般情况下,我们可以直接使用cocos自带的HttpClient(底层用libcurl实现)来处理,但很多时候,我们游戏其他逻辑也在用HttpClient,比如登录、下载资源等等,这就可能带来一个问题,如果某个时间客户端产生多条错误日志(或是log服务器的带宽有限,大量并发),这些日志请求的发送势必会影响主游戏逻辑,抢占curl队列。

另外也要提到curl的一个特性,当我们调用 curl_easy_perform 函数执行请求,必须等到服务器返回结果后面才能继续,也就是说如果后台服务器因其他原因响应延迟,整个curl队列都得等待。

如何解决上面的尴尬? 显然,比起日志请求,游戏逻辑必须优先保证。 所以我们让日志请求走另外的方式实现,方案:用iOS sdk的http实现。非常简单,而且,抛出去不用管返回!特别适合日志记录这类需求

以下是简单的代码,对于安卓也是类似,我们可以用Android SDK里面的http方式来实现

void sendHttp(const char *url0,int method)
{
    NSString *url = [NSString stringWithUTF8String:url0];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];// autorelease];
    [request setURL:[NSURL URLWithString:url]];
    if (method == 0)
    {
        [request setHTTPMethod:@"POST"];
    }
    else
    {
        [request setHTTPMethod:@"GET"];
    }
    NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request delegate:nil];
}
时间: 2024-08-11 05:45:06

Cocos2d-x ios 下http请求的另一种实现的相关文章

IOS拦截重定向请求(302)的几种方式

前言 在多数情况下,我们做的网络请求是返回200状态码的,但也有返回302的时候,比如使用基于Oauth2认证协议的API时,在认证阶段,需要提供一个回调地址,当用户授权后,服务器会返回一个302 Response,Response Header中会一个Location字段,包含了我们的回调地址,同时会有一个Code参数.我们在程序中该如何处理这个请求,并拿到这个Code参数呢.下面由我来为大家讲解下几种方式的做法,各取所需. 假设您知道并使用过Oauth2认证协议 (一)UIWebView控件

iOS UIWebview添加请求头的两种方式

1.在UIWebviewDelegate的方法中拦截request,设置request的请求头,废话不多说看代码: - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *urlString = [[request URL]  absoluteS

iOS下的Http库AFNetworking

在iOS下开发一直是用ASIHTTPRequest库,ASIHTTPRequest已经停止更新,看了这个文章http://www.oschina.net/news/61416/github-top-100-objective-c-projects (原文https://github.com/Aufree/trip-to-iOS/blob/master/Top-100.md)的AFNetworking库,感觉还不错. AFNetworking库的地址是 https://github.com/AFN

iOS下JS与OC互相调用(一)--UIWebView 拦截URL

http://blog.csdn.net/u011619283/article/details/52135977 最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换.顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊.目前我已知的JS 与 OC 交互的处理方式: * 1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) *

iOS开发-Get请求,Post请求,同步请求和异步请求

标题中的Get和Post是请求的两种方式,同步和异步属于实现的方法,Get方式有同步和异步两种方法,Post同理也有两种.稍微有点Web知识的,对Get和Post应该不会陌生,常说的请求处理响应,基本上请求的是都是这两个哥们,Http最开始定义的与服务器交互的方式有八种,不过随着时间的进化,现在基本上使用的只剩下这两种,有兴趣的可以参考本人之前的博客Http协议中Get和Post的浅谈,iOS客户端需要和服务端打交道,Get和Post是跑不了的,本文中包含iOS代码和少量Java服务端代码,开始

摘录 :iOS下音视频通信的实现-基于WebRTC

原文出自:http://www.cocoachina.com/ios/20170306/18837.html ,为了方便记忆,转载,如原作者不同意转载,邮件通知,立即删除 前言: WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,简而言之它是一个支持网页浏览器进行实时语音对话或视频对话的技术. 它为我们提供了视频会议的核心技术,包括音视频的采集.编解码.网络传输.显示等功能,并且还支持跨平台:windows,linux,mac,android,i

iOS HTTP网络请求Cookie的读取与写入(NSHTTPCookieStorage)

当你访问一个网站时,NSURLRequest都会帮你主动记录下来你访问的站点设置的Cookie,如果 Cookie 存在的话,会把这些信息放在 NSHTTPCookieStorage 容器中共享,当你下次再访问这个站点时,NSURLRequest会拿着上次保存下来了的Cookie继续去请求.同样适用于ASIHTTPRequest,AFNetworking, Webview等,Cookie常用于一些基于认证的网络请求 认识下NSHTTPCookieStorageNSHTTPCookieStorag

转--iOS下JS与原生OC互相调用

iOS下JS与原生OC互相调用 引言 一直听说WKWebView比UIWebView强大许多,可是一直没有使用到,今天花了点时间看写了个例子,对其API的使用有所了解,为了日后能少走弯路,也为了让大家更容易学习上手,这里写下这篇文章来记录如何使用以及需要注意的地方. 温馨提示:本人在学习使用过程中,确实有此体会,WKWebView的确比UIWebView强大很多,与JS交互的能力显示增强,在加载速度上有所提升. WKWebView新特性 性能.稳定性.功能大幅度提升 允许JavaScript的N

Cocos2d-x3.2 iOS下开启多点触控

iOS下默认是不开启多点触控的,我们要想要使用需要做如下的内容: iOS文件夹下:AppController.mm 需要加一行代码: // 只需要新增这样一行代码就可以使用多点触控啦. [eaglView setMultipleTouchEnabled:YES]; 具体位置见下面: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions