0

私はこれら2つのことがどのように機能するかを理解しようとしています。明らかに、WebSocketはプッシュテクノロジーを使用しているため、クライアントは長いポーリングを実行したり、何かが変更されたかどうかを常に更新して確認したりする必要はありません(イベントリスナーのようなものです)。

しかし、デリゲートでは、Objective Cの場合と同様に、メソッドが起動されたかどうかを確認するために、リクエストを何度も送信することにより、デリゲートが常にチェックしています。または、メソッドが実行されたという情報がデリゲートにプッシュされますか?

または、デリゲートに関する私の3番目の理論は、もちろん同じプログラム内にあるため、2つのクラス(プロトコルクラスとデリゲートクラス)は常にポーリングのような「オープン接続」を持っているかどうかです。それとも、情報が本当にプッシュされている私の2番目の段落のようなものですか。

4

1 に答える 1

1

WebSocketは、双方向の全二重メッセージベースの通信チャネルです。多くのプッシュテクノロジーでは、サーバーからクライアント(ブラウザー)への待ち時間を短くすることができますが、WebSocketを使用すると、クライアントからサーバーへの待ち時間も短くなります(したがって、ラウンドトリップの待ち時間も短くなります)。

私の読書(私はObjective-Cの専門家ではありません)から、デリゲートは、オブジェクト間に(ネットワークの意味ではなく、オブジェクトの意味で)緩いプロトコルを作成するための単なる方法です。実装の詳細はわかりませんが、ポーリングは行われていないと確信しています。デリゲートメソッドは、おそらく必要なときに検索されるだけです。「接続を開く」またはポーリングする必要はありません。デリゲートは、(WebSocketのような)ネットワークトランスポートとしてではなく、関数/メソッド呼び出しを行う方法と考えてください。このAppleのドキュメントでは、さらに詳しく説明しています。

于 2013-03-07T23:58:18.507 に答える