我有一个ASP.NET Core网站,在其中实现了一个名为NotificationHub的中心:
public interface INotificationHub
{
Task SendNotificationMessage(NotificationMessage message);
}
public class NotificationHub : Hub<INotificationHub>
{
public async Task SendMessage(NotificationMessage message)
{
await Clients.All.SendNotificationMessage(message);
}
}
我有两个Winforms客户端,可以成功连接到集线器并发送/接收消息。我的网站上还有一个页面,可以通过注入到控制器中的HubContext发送消息。
await _hubContext.Clients.All.SendNotificationMessage(new NotificationMessage { "some message" });
理想情况下,我想要的是向特定客户端而非所有客户端发送消息。我知道当客户端连接时,OnConnectedAsync方法中有Context.ConnectionId,但是我不确定如何映射它,因此我只能将某些消息从Controller(或javascript)路由到某些客户端。即,我的网站上发生了某种活动,我只想通知一个客户,而不通知另一个。
答案 0 :(得分:0)
如果您使用的是最新版本,则应该可以通过用户ID进行操作。
public async Task SendMessage(string userId, string message)
{
await Clients.User(userId).SendAsync(message);
}
OR
await _hubContext.Clients.User(userId).SendNotificationMessage(new NotificationMessage { "some message" });