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