c# - 我如何通过控制器的 userId 向特定用户发送 signalR 消息?
问题描述
我无法从控制器向特定用户发送通知消息。
我的控制器:
public class SomeController : ControllerBase
{
private readonly IHubContext<NotificationHub> _hubContext;
public SomeController(IHubContext<NotificationHub> hubContext)
{
_hubContext = hubContext;
}
public async Task SomeMethod()
{
//it works
await _hubContext.Clients.All.SendAsync("sendMessage", msg);
//it doesn't work
await _hubContext.Clients.User(userId).SendAsync("sendMessage", msg);
//it also doesn't work
await _hubContext.Clients.Client(userId).SendAsync("sendMessage", msg);
}
}
不幸的是,IHubContext 有一些不完善的地方。在 Clients 属性中,只有 Clients 可用。All - 也就是说,我们只能向所有客户端发送消息,并且在 hub 类中没有可用的诸如 Other 或 Caller 之类的属性。此外,我们无法从 IHubContext 获取连接 ID。
还有其他方法可以做到吗?还是只有 SQL 依赖才有可能?
解决方案
推荐阅读
- python - plotly dash:如何在不同的刻度中绘制 y 轴?
- android - Android BLE直接通过地址连接失败
- node.js - node-mocks-http 没有发出“结束”事件
- angular - 带有虚拟滚动条的 ng2-dragula
- powershell - 当函数内部发生错误时抛出异常
- jenkins - 一次失败时如何使用不同的参数值再次触发相同的作业?
- scala - 如何决定火花纱配置属性
- karate - 如何通过单独的功能文件迭代参数列表?
- oracle - oracle表单如何在execute_query之后保持复选框被选中
- javascript - 在javascript对象的某个位置插入键值对