6

ネイティブiOSアプリでサーバー送信イベントを受信したいのですが、webkit/Safariを使用していません。私が見つけたところによると、NSURLConnectionは応答をチャンク化するため、適合性が低くなっています。ZTWebSocketライブラリも調べました(明らかに素晴らしいですが、WebソケットではなくSSEを探しています)。CocoaAsyncSocketは適切でしょうかまたは、純粋なTCPソケット通信に限定されますか?

明らかな何かが欠けている、またはこのためのライブラリまたはサンプルがすでに存在するのではないかと、こっそりと疑っています。前もって感謝します。

4

3 に答える 3

3

これについてさらに調査した結果、WebKitを使用せずにiOSでサーバー送信イベントを実装する最善の方法は、カスタマイズされたNSConnection/NSRequestツールセットを使用することであると私は考えています。私はASIHTTPRequestに落ち着きました。このライブラリを使用すると、接続オブジェクト(必須)の永続性属性を明示的に制御したり、ストリームを介して受信したデータを制御したり、応答を保存したり(ローカルファイルなど)することができます。

言うまでもなく、ネットワーキングの分野で他の多くの便利な拡張機能/カスタマイズが含まれています(改善された到達可能性オブザーバー、非同期用の簡略化されたAPI、キューイング機能、さらにはWebページ全体(CSS、jsなど)をロードする機能。

サーバー側では、Cyclone-sse(トルネード)とnginx(リバースプロキシとして)を使用しています。非常にエキサイティングです。これで、SSEがiOSシミュレーターとブラウザーサブスクライバーの両方に同時にプッシュされるのを見ることができます。Cycloneはすべての接続を処理し、メッセージプッシュ用の単純なPOSTをサポートするAPIを提供します(AMQPとRediもサポートします)...

簡単に言えば、ASIHTTPRequestは私にとって完璧なソリューションでした。

于 2012-10-24T23:17:25.203 に答える
3

SSEは、オープンHTTP接続にバインドされているという意味でHTTPテクノロジーです。CocoaAsyncSocketは生のTCP/UDPソケットであり、HTTPについては何も知りません。いいえ、あなたが疑ったように、CocoaAsyncSocketはあなたにSSEを与えません。

(スタンドアロンのWebsocket実装の精神で)SSEのスタンドアロン実装を知りません。これはおそらくあなたが探しているものです。しかし、私が見る限り、SSEはHTMLのコンテキストで最も賢明なDOMイベントの形式でメッセージを送信しているので、それがまったく意味があるかどうかもわかりません。

iOSアプリにメッセージを送信するだけで、テクノロジーを自由に選択できる場合は、rawソケットで十分です。しかし、Websocketは、必要に応じて、ニーズに合う可能性が高くなります。SocketRocketを見てください。

于 2012-10-17T19:40:07.373 に答える
0

Swiftで書かれたこのシンプルなライブラリを試してみてください: https ://github.com/hamin/eventsource.swift

APIは非常にシンプルです。今のところNSURLConnectionを使用しています。

于 2015-11-28T13:53:10.913 に答える