当我从Controller调用displayRegMessage()方法时,所有客户端都会调用它。我只希望将此方法调用到单个客户端。
控制器: -
public ActionResult Contact()
{
....
var context = GlobalHost.ConnectionManager.GetHubContext<Hub>();
context.Clients.All.displayRegMessage("1");
return View();
}
查看: -
var payrollHub = jq.connection.payrollHub;
payrollHub.client.displayRegMessage = function (msg) {
....
jq(".msg").html(msg);
};
jq.connection.hub.start();
我使用Signal R
作为更新进度条。它工作正常。但如果2台计算机已打开同一页面并且如果我从一台计算机上调用方法,那么它也被调用&amp;看到在第二台电脑上玩。
答案 0 :(得分:1)
您可以使用组(可以是单个客户端),但您必须为该组应用ID。
public class PayrollHub : Hub
{
public void Join(string groupId)
{
Groups.Add(Context.ConnectionId, groupId);
}
}
要加入该组,您可以执行以下操作,其中groupId是客户端的唯一值(在本例中为字符串),例如用户名:
jq.connection.hub.start().done(() => {
jq.connection.payrollHub.server.join(groupId);
});
在你的控制器动作中调用它,如果groupId再次是唯一的组ID(例如用户名):
var hubContext = GlobalHost.ConnectionManager.GetHubContext<PayrollHub>();
hubContext.Clients.Group(groupId).displayRegMessage("1");