2012-06-01 15 views
8

NSURLConnectionを使用して同じホストに複数の永続的な接続を作成するOS Xアプリケーションで問題が発生しています。私は部屋ごとに別々の接続を作成し、ストリーミングAPIを使用するために部屋が開いている間は接続されたままです。多くの部屋を開くと、正しく動作しなくなります。同じホストへの同時NSURLConnectionsの最大数?

私は、10の接続を作成する別々のサンプルアプリケーションを作成しました.6つの接続だけが動作するように見え、他のものはキューに入れられているようです。この制限を無効にする方法があるかどうかは誰にも分かりますか?私はそれがどこに文書化されて見つけることができません。私が見つけた唯一の回避策は、ホスト名ごとにあるようだから、 "localhost"と "127.0.0.1"でテストすると、ホストごとに6つの接続が可能になります。私はここにクライアントとサーバを持つサンプルプロジェクトをアップロードしました - http://cl.ly/1x3K0D1F072V3U2T0C0I

+0

iosまたはosxプラットフォームですか? –

+0

申し訳ありませんが、これはOS X上にあります。更新された質問です。 –

+0

@Zach Waugh 私はあなたのコードをチェックしています:)あなたはserver.jsと何か関係ないと確信していますか?(Node)server.jsを実行しましたが、最大6つの接続も取得しています。 – self

答えて

5

私は、同じ問題ではなくiOS上にあるようなもののためにレーダーを提出しました。一度に5つ以上の接続を開くことはできません。接続は同じドメインを指している必要はありません。それ以降のものはすべてキューに入れられます。したがって、極端に遅いエンドポイントまで5つの接続が開いている場合、他の接続は通過しません。

レーダー:http://openradar.appspot.com/radar?id=2542401

Appleの返信:

これが私たちのNSURLConnection接続キャッシュの効果です。それは期待される。新しいAPIを使用してこのタイプの構成に対処する予定です。

私は尋ねた、彼らは私にもう情報与えることができれば、彼らは言った(接続の種類は、それに影響を与えないことは変わりないの?):

残念ながら、我々は、接続の詳細を与えることはできません行動を制限する。

一般的なユーザーエージェント(Chrome、Firefox、Safari)は、ホスト名ごとに6つの同時TCP接続を使用します(潜在的な1回限り)。

0

CFNetwork API(CFHTTPMessage)を使用すると、この制限を打破できます。

ここには、「CFNetworkプログラミングガイド」があります。 https://developer.apple.com/library/mac/documentation/Networking/Conceptual/CFNetwork/Introduction/Introduction.html#//apple_ref/doc/uid/TP30001132

ところで、CFNetworkを使用する場合は、プロキシを回避して認証する必要があります。

これが役に立ちました。

関連する問題