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");