SIgnal R - 单客户端的呼叫方法

时间:2015-04-14 09:37:20

标签: jquery asp.net-mvc signalr

当我从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;看到在第二台电脑上玩。

1 个答案:

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