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方式で実現できます.
また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];
}