「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
仕組み †
API †
SignalRには、PersistentConnectionとHubという2つのAPIが存在する。
PersistentConnection? †
Hub †
- SignalRを使ったアプリの開発では主にHubを使う。
- オーバーヘッドが大きい。
- リクエストの解析
- リフレクションを使ったメソッド呼び出し
コネクションID †
コンテキスト †
- Contextプロパティ
- HttpContext?などの振る舞いは、下位トランスポートによって異なるので使用しない。
- Hub.Contextプロパティ
- HubCallerContext?クラスのインスタンスがHub.Contextプロパティとして公開される。
# | プロパティ | 説明 |
| Context.ConnectionId?プロパティ | クライアントのコネクションID |
| Context.Headersプロパティ | HTTPリクエスト・ヘッダーのコレクション |
| Context.QueryString?プロパティ | クエリ文字列のコレクション |
| Context.Requestプロパティ | 今回のリクエスト情報 |
| Context.RequestCookies?プロパティ | クッキーのコレクション |
| Context.Userプロパティ | ログイン中のユーザー情報 |
- Clientsプロパティ
- クライアントのグループ化を行う。
# | プロパティ | 説明 |
1 | Clients.All | 全てのクライアント |
2 | Clients.Caller | 自分のみ |
3 | Clients.Others | 自分以外の全てのクライアント |
| Clients.Group( | 指定したグループ名に属するクライアント |
HubPipeline? †
開発 †
サーバ †
処理順 †
- テンプレートを選択
- NuGetを使ってSignalRをインストール
- Global.asax.csファイルに設定
- 通例的にHubsディレクトリを作成
- Hubクラスを作成(なるべくHubName?属性を付与)
- Hubクラスのメソッドに、Clientsのプロパティを使用してレスポンス処理を書く。
サーバ・ライブラリ †
https://www.nuget.org/packages/Microsoft.AspNet.SignalR/
クライアント †
処理順 †
- サーバとの接続オブジェクトを作成
- Hubのプロキシ・オブジェクトを作成
- クライアントのメソッド(コールバック)を登録
- 接続を開始
- サーバのメソッドを呼出
クライアント・ライブラリ †
- , etc.
SignalR-ObjCなどもある。
利用方法 †
サーバの要件とブラウザ側の対応状況に基づいて、
選択肢の中から最適な通信手段をSignalRが選択する。
選択肢 †
- Server-Sent Events
- iframe
- Ajax ロングポーリング(Long-polling)
参考 †
コチラを参照。
参考 †
Wikipedia †
Qiita †
Microsoft Docs †
Tags: :.NET開発, :OWIN, :ASP.NET, :ASP.NET SignalR