SignalR,asp.net如何设置connectionId?

时间:2012-08-01 14:17:14

标签: c# asp.net signalr

我想向用户发送私信。我需要设置一个connectionId,例如在隐藏字段中,我这样做:

$.connection.hub.start().done(function () {
    $.connection.hub.id = $("[id$=hfLoggedUserId]").val();
})

当我在firbug console $ .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);

然后消息将发送到所有连接的客户端。

如何仅向特定客户发送消息?

P.S我读到了IConnectionIdFactory,但我不想将自己的工厂用于所有集线器。有没有办法只将连接工厂设置到特定的集线器?如果我将此行插入Global.asax:

GlobalHost.DependencyResolver.Register(typeof(IConnectionIdGenerator), () => new MyOwnConnectionFactory())

然后我的工厂用于所有集线器。

0 个答案:

没有答案