我想向用户发送私人消息。我需要在隐藏字段中设置一个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())
然后我的工厂与所有集线器一起使用。