SIgnal R - 单客户端调用方法
SIgnal R - Calling method with Single Client
当我从控制器调用 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
作为更新进度条。它工作正常。但是,如果两台计算机打开了同一页面,并且如果我从一台计算机调用该方法,那么它也会被调用并在第二台计算机上播放。
您可以使用群组(可以是单个客户端),但您必须为群组申请一个 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");
当我从控制器调用 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
作为更新进度条。它工作正常。但是,如果两台计算机打开了同一页面,并且如果我从一台计算机调用该方法,那么它也会被调用并在第二台计算机上播放。
您可以使用群组(可以是单个客户端),但您必须为群组申请一个 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");