zoukankan      html  css  js  c++  java
  • 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];
    }
  • 相关阅读:
    ES5、6对异步事件的处理方式
    SQL技巧
    前端技巧
    docker start 启动失败,logs 没有日志
    mysql使用存储过程insert
    Spring 手动回滚事务/提交事务,及通过
    mysql触发器trigger 实例详解
    @PostConstruct 之NullException
    springboot 2 多数据源 hikari 连接池
    swagger 日期Date
  • 原文地址:https://www.cnblogs.com/howeho/p/4187266.html
Copyright © 2011-2022 走看看