我在我的中央处理器内部有一个用于向特定客户端发送更新票据的方法。但是我希望它发送到控制器内部的服务器和特定的用户,您可以看到我以下面的方式实现:
我正在使用以下方法向特定客户端发送更新消息:
public void NotifyUpdatedTicket(Ticket ticket, string note, params string[] aliases)
{
foreach (string a in aliases)
{
foreach (string connectionId in _allConnections.GetConnections(a))
{
Clients.Client(connectionId).notifyUpdatedTicket(ticket, note);
}
}
}
_allConnections与http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections#inmemory中的类相同。
但是,我传递了一个别名列表而不是一个用户,并获取他们的连接并将其发送到他们的连接ID。
然而,它似乎没有正确发送,而是将其发送给所有客户端。这是我在控制器中调用该方法所使用的命令:
GlobalHost.ConnectionManager.GetHubContext<TicketHub>().Clients.All.notifyUpdatedTicket(viewModel.Current, viewModel.NewNote, viewModel.Current.OpenedBy, viewModel.Current.AssignedTo);
当我使用特定的OpenedBy和AssignedTo发送上述命令时,它会发送给所有用户,而不应该这样做。
我在调用控制器时是否漏掉了只发送给特定用户的内容?
即使我直接将人员别名放入hub方法中,它仍然会发送给每个人。我认为这与控制器方法有关。