2016-09-16 9 views
0

私はSignalRを使用することを学んでおり、これまでに私は成功しました。私はハブを実装することができます、私はビジネスロジックを実装することができます、私は私が欲しいサーバーからクライアント側の関数を呼び出すことができます、私はクライアントサイドからサーバー側のメソッドを呼び出すことができます。私を困惑させるのは理論です。なぜSIgnalRはポーリングより永遠にフレームを好むのですか?

実際には、私はこのvideoから情報を集めました。 SignalRは、WebSocketsを使用しており、これは1つの接続上でfull duplex channelを提供します。利用可能なWebSocketがない場合、代替プロトコルはEventSourceになります。それが利用できない場合は、永遠フレームが使用されます。それが利用できない場合、ロングポーリングが使用されます。永遠のフレームのような非常にハッキリな解決策がより古い慣習より好まれ、私は永遠のフレームを第3のオプションとして持ち、第4のオプションとしてポーリングするというSignalRの決定の背後にある論理的根拠に興味があります。

私はこの質問に対する答えを見つけようとしましたが、それはthere is a 3x max latency time in the case of long polling compared to forever framesと噂されています。これは事実ですか、そうであれば、すべてのブラウザやサブセットの事実ですか?

答えて

1

foreverFrameは、serverSentEventsのように動作します。サーバが決して終了しないが、クライアントにデータをプッシュするために使用する長時間実行されるHTTPリクエストが1つあります。 longPollingの動作は異なります。クライアントが読み取るデータがある(またはタイムアウトが切れる)たびに、サーバーによって閉じられているポーリングhttp要求があります。クライアントがより多くのデータを読みたい場合、新しいHTTP要求を開く必要があります。新しいHTTP要求は、クライアントのデータがあるとすぐにサーバーによって閉じられます。つまり、foreverFrameの場合、サーバーはすでに確立されたチャネルを使用してクライアントにデータをプッシュしますが、longPollingの場合、クライアントはサーバーからデータを取得するためにhttp要求を継続的に作成しています。

+0

あなたの答えを理解していただきありがとうございます。これはすでにアップヴォートに値するものです。しかし、Pollerがデータを送信するたびにHTTPチャネルを開く必要があるため、3倍のレイテンシが実際に存在することを実際に確認できるかどうかは疑問です。 –

+0

データの送信は同じ方法で動作します。両方のケースで新しいhttpリクエストが作成されるため、データを送信する際にforeverFrameとlongPollingの間に待ち時間に違いはないと言います。 – Pawel

+0

受信時にレイテンシはありますか? –

関連する問題