我想向用户发送私信。我需要设置一个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())
然后我的工厂用于所有集线器。