如何允许 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
我之前问过这个问题,但由于这个线程 (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