Cocos 2 d-x iosでのhttpリクエストのもう一つの実装

2131 ワード

简単に需要を说明します:ゲームはイベントのlogに参加して、例えばプレーヤーは10级に升格します;ロールの作成;あるいは、これらのイベントをトリガーした後、クライアントはバックグラウンドにlog情報を送信することを忘れなければならない.一般的には、cococosが持参した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];

}