私はちょうど SignalR ( https://github.com/SignalR/SignalR ) で Hubs を読んでいましたが、それが何であるかを明確に理解できませんでした。チャットのグループのようなものですか、それとも何か他のものですか?
4 に答える
私は使用していませんが、基本的にはクライアント (javascript、silverlight、.NET) と ASP.NET の間で通信するための「リアルタイム」通信テクノロジです。現在、「リアルタイム」通信 (チャット アプリケーションと考えてください) には、ポーリング、ロング ポーリング、および HTML5 WebSocket の 3 つの方法があります。SignalR は抽象化レイヤーを追加し、ブラウザーのサポートとコンテキストに応じて、これら 3 つのメソッドすべてを活用します。3 つの方法 (および SignalR がどのように役立つか) を説明する記事を次に示します 。
そして、Hanselman の記事 (および機能するデモ!) の使用方法を次に示し ます。
別: http://jordanwallwork.co.uk/2011/10/signalr/
Hub は、通信に使用されるクラスです。JavaScript では、次のようなハブを使用できます。
$(function() {
var myConnection = $.connection.myHub;
$.connection.hub.start();
});
ASP.NET では、次のようにします。
public class Chat : Hub {
public void Distribute(string message) {
Clients.receive(Caller.name, message);
}
}
これらのスニペットは両方とも、上記のリンクから取得したものです。
ハブは、クライアント( javascript)とサーバー(ハブ)間の永続的な接続のためのAsp.NETMVCコントローラーと考えることができます。
クライアントとサーバー間でさまざまな種類のメッセージとデータを送信する簡単な方法。
パラメータと戻り値は、クライアント側でJSONとの間で自動的にシリアル化されます。
ハブにはクライアントをグループに追加するという概念があるため、AddToGroupメソッドとRemoveFromGroupメソッドを使用してチャットルーム機能を作成できます。したがって、特定のグループ内のすべてのクライアントにメッセージを送信できます。
GitHubからコードをダウンロードして、サンプルを確認することを強くお勧めします。部屋(グループ)のあるチャットサンプルがあります。
ハブは、リアルタイムのクライアントからサーバーへの RPCとサーバーからクライアントへの RPC の両方を HTTP 経由で許可する SignalR の高レベル API です。ハブは、1 対多の RPC をサポートします。たとえば、すべてのクライアント、クライアントのグループ、呼び出し元のみなどです。トランスポートは、WebSocket、サーバー送信イベント、永久フレーム、ロング ポーリングのいずれか (最良から最悪) を介して行われます。
これを読んで、ハブとは何かについて明確に定義された答えにたどり着き、この質問に出くわしました。ここには多くの回答がありますが、signalR の可能性を完全に明らかにしていないという意味で、少し古いようです。
最近、singalR を使用してプッシュ通知アプリケーションを作成しました。
データベースにデータを挿入するAJAXリクエストを送信することを想像してください。変更をリッスンするデータベースにリスナーを接続すると、その特定のデータベースの変更に関するメッセージをサーバーからすべての接続ユーザーに送信できます。つまり、何かが発生したというプッシュ通知です。
この記事は、これを部分的に達成する方法の良い例を示しています