3

ユーザーにプライベートメッセージを送信したい. 非表示フィールドなどに 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())

私の工場はすべてのハブで使用されています。

4

0 に答える 0