ユーザーにプライベートメッセージを送信したい. 非表示フィールドなどに connectionId を設定する必要があります。次のようにします。
$.connection.hub.start().done(function () {
$.connection.hub.id = $("[id$=hfLoggedUserId]").val();
})
firbug コンソール $.connection.hub.id で実行すると、適切な値が得られます。それにもかかわらず、クライアントにメッセージを送信すると、メッセージが届きません。
次のようなコードを使用して、サーバー側から電子メッセージを送信します。
public static void LogNewMessage(Bobine.Data.Message message)
{
var clients = GetClients();
clients[message.ReceipientUserId.ToString()].newMessage("Serwer", Message);
}
private static dynamic GetClients()
{
return GlobalHost.ConnectionManager.GetHubContext<MessageHub>().Clients;
}
この行を変更すると
clients[message.ReceipientUserId.ToString()].newMessage("Serwer", Message);
に
clients.newMessage("Serwer", Message);
メッセージは、接続されているすべてのクライアントに送信されます。
特定のクライアントにのみメッセージを送信するにはどうすればよいですか?
PS IConnectionIdFactory について読みましたが、すべてのハブに自分のファクトリを使用したくありません。接続ファクトリを特定のハブのみに設定する方法はありますか? この行を Global.asax に挿入すると:
GlobalHost.DependencyResolver.Register(typeof(IConnectionIdGenerator), () => new MyOwnConnectionFactory())
私の工場はすべてのハブで使用されています。