個々のユーザーにSignalRを使用してメッセージを送信させたいので、特定のクライアントIDに送信する必要があります。セッションの開始時に特定のユーザーのクライアントIDを定義するにはどうすればよいですか?つまり、ユーザーのGUID主キーSignalR - ClientIDを手動で設定する
答えて
IConnectionIdFactoryを自分のhttps://github.com/SignalR/SignalR/wiki/Extensibilityに置き換えます。
使用例: http://www.kevgriffin.com/maintaining-signalr-connectionids-across-page-instances/
EDIT:これはSignalRの最新バージョンではサポートされなくなりました。しかし、あなたはSignalR Client Side documentationは以下の概要を説明し、新たなIUserIdProviderに
を使用して、特定の接続のためのユーザーIDを定義することができます。
は connection.id - 現在の接続のクライアントIDを取得または設定し
これは、上記のすべての配管なしでクライアントIDクライアント側を設定できる必要があることを示しています。これは機能していないのですか?動作している場合、このコード行はどのように見えますか?
私はこれを試していませんが、接続IDをGUID(ユーザーID)などのサーバーに知られているものに割り当てる必要があるため、IConnectionFactoryソリューションが最適です。 – reach4thelasers
+1を上げるために+1 – reach4thelasers
Hubsアプローチを使用するSignalRバージョン1では、Hub OnConnected()メソッドをオーバーライドし、.NETメンバーシップuserIdとSQLデータベースの現在の接続ID(Context.ConnectionId)との関連付けを保存します。
次に、Hub OnDisconnected()メソッドをオーバーライドし、.NETメンバーシップuserIdと現在の接続IDの間の関連付けを削除します。つまり、ページをリロードすると、userId/connectionIdの関連付けが最新の状態になります。線に沿って
何か:私は特定のユーザーのSignalRイベントをトリガする必要がある場合
public class MyHub : Hub
{
private MembershipUser _user
{
get { return Membership.GetUser(); }
}
private Guid _userId
{
get { return (Guid) _user.ProviderUserKey; }
}
private Guid _connectionId
{
get { return Guid.Parse(Context.ConnectionId); }
}
public override Task OnConnected()
{
var userConnectionRepository = new UserConnectionRepository();
userConnectionRepository.Create(_userId, _connectionId);
userConnectionRepository.Submit();
return base.OnConnected();
}
public override Task OnDisconnected()
{
var userConnectionRepository = new UserConnectionRepository();
userConnectionRepository.Delete(_userId, _connectionId);
userConnectionRepository.Submit();
return base.OnDisconnected();
}
}
そして、私は現在のユーザーIDでデータベースの関連付け(S)からconnectionIdを考え出すことができる - が複数のブラウザインスタンスが含まれている場合、複数の関連付けが可能です。
これの例がありますか? – CR41G14
例を使って自分の答えを更新しました –
- 1. asp.netでClientIDを設定する
- 2. Railsデータベースを手動で設定する
- 3. ListViewを手動で設定する
- 4. 手動でDJANGO_SETTINGS_VARIABLEを設定する
- 5. SignalR&require.jsの設定
- 6. ソニーカメラAPIで手動でフォーカスを設定
- 7. ASTParserの設定環境を手動で
- 8. FormBuilderコントロールの値を手動で設定
- 9. Bugzilla設定ファイルのurlbase設定を手動で変更するには?
- 10. qmakeでシャドウビルドを手動で設定する
- 11. Python/matplotlibでxaxis_date()を手動で設定する
- 12. Eclipseで手動でJDKパスを設定する
- 13. ASP.NETでUICultureを手動で設定する
- 14. CMake:MPIヘッダーとバイナリへのパスを手動で設定する
- 15. 応答ステータスコードを手動で設定する
- 16. Entity Framework - 新しいオブジェクトのIDを手動で設定する
- 17. ggplot2のグループカラーを手動で設定する
- 18. Crystalレポート、手動でレポートを書式設定する
- 19. テキストビューのパディングを手動で設定する方法は?
- 20. 剣道UI手動でセル汚れインジケータを設定する
- 21. popoverPresentationControllerのアンカーポイントを手動で設定する方法
- 22. drupal pathauto将軍の設定を手動で適用する
- 23. MariaDBDataSourceを手動で作成および設定する方法
- 24. 手動でDjango形式のタイムゾーンを設定する
- 25. TDateTimePicker言語を手動で設定する方法は?
- 26. カラーバーの範囲を手動で設定する方法は?
- 27. 手動でインターフェイスの向きを設定する
- 28. Powerpoint:手動でスライド名を設定する
- 29. 剣道用のデータを手動で設定する方法
- 30. SSRSでパラメータの幅を手動で設定できますか?
優秀 - 返信とブログのリンクありがとう! – reach4thelasers
クッキーを使用せずに手動でクライアントIDを設定する方法はありますか?おそらくstartメソッド()のパラメータか、カスタム接続ファクトリのリクエストオブジェクトに情報を渡す別の方法ですか? –
私のブログにリンクありがとう! – 1kevgriff