[解決済み] SignalRは内部でどのように動作しているのですか?
質問
SignalRが内部でどのように動作しているのか、どなたか教えてください。
を使用してデータをフラッシュしていると推測されます。
Response.Flush
で、クライアント側で一定時間ごとにAjaxリクエストを送信しています。これは正しいのでしょうか?
解決方法は?
SignalRはコネクションを抽象化したものです。そのコネクションに対して2つのプログラミングモデル(ハブと持続的なコネクション)を提供します。SignalRにはトランスポートという概念があり、それぞれのトランスポートがデータの送受信方法と接続・切断方法を決定します。
SignalRはいくつかのトランスポートを内蔵しています。
- ウェブソケット
- サーバーから送信されたイベント
- フォーエバーフレーム
- ロングポーリング
SignalRは、サーバーとクライアントがサポートする最良の接続を選択しようとします(特定のトランスポートを使用するように強制することもできます)。
これがハイレベルの話です。もし各トランスポートがどのように実装されているか見たい場合は ソースコード .
また、各トランスポートのクライアントコードもあります。 https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
特にロングポーリングトランスポートの仕組みについての質問であれば
ajaxリクエストをサーバーに送り、そのサーバーは非同期でシグナルが返ってくるのを待っています。シグナルがあるか、リクエストがタイムアウトすると、サーバーから戻り、別のリクエストを送信し、プロセスが継続されます。(メッセージを見逃さないために、クライアントが何を見たかを追跡する方法についての詳細は省きました)
これでほとんどの質問に答えられると思います。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン