如何允许 JavaScript 使用 Signal R 接收发送给特定用户(或自己)的消息?

How to allow JavaScript to receive a message sent to a specific user (or self) using Signal R?

我之前问过这个问题,但由于这个线程 (SignalR - Sending a message to a specific user using (IUserIdProvider) *NEW 2.0.0*),它因重复而关闭 - 但这并没有显示 JavaScript,正如我在标题中明确指出的那样。

我在 ASP.Net 中有一个 WebForm 应用程序,它使用 SignalR 将实时数据推送给登录的用户。设置工作完美,但我意识到我正在向所有客户端广播消息,虽然它没有导致向登录用户显示错误的数据,确实会导致 JavaScript 函数在只有一个用户有数据推送时为所有用户调用。

我修改了集线器代码以向特定用户广播 (User) 并提供了用户 ID,我还尝试 Client 使用连接 ID。两者都在代码隐藏中正常运行,但 javascript 不会更新前端。

我相信这是因为 JavaScript 没有被修改为监听发送给用户的消息,但我不确定我需要如何调整代码以允许接收消息。

此处 Hub 中的 2 条尝试过的线路:

context.Clients.User(Me.Context.User.Identity.GetUserId()).ReceiveNotification(notifCount)
context.Clients.Client(Me.Context.ConnectionId).ReceiveNotification(notifCount)

JavaScript/jQuery 此处 SignalR 消息的函数:

$(function () {
    var nf = $.connection.notificationHub;

    nf.client.receiveNotification = function (notifCount) {
        // Update data
    }

    $.connection.hub.start().done(function () {
        nf.server.sendNotifications();
    }).fail(function (e) {
        alert(e);
    });
    //$.connection.hub.start();
});

要回调给客户(或自己),您应该使用:

Clients.Caller.addContosoChatMessageToPage(name, message);

呼叫用户时应使用:

Clients.Client(Context.ConnectionId).addContosoChatMessageToPage(name, message);

参考 - docs