.net - 从控制器 Asp.Net Core SignalR 发送消息
问题描述
任何人都可以分享描述如何以正确方式使用 IHubContext 的链接吗?因为如果我可以直接从控制器发送消息,我只是混淆了我的 NotificationHub 的目的是什么?
public class NotificationHub : Hub
{
public async Task SendMessage(string user, string message)
{
await Clients.All.SendAsync("ReceiveMessage", user, message);
}
}
我从控制器中调用的内容:
await hubContext.Clients.Client(user.Id.ToString()).SendAsync("ReceiveMessage", user.FirstName);
其中 hubcontext 类型IHubContext<NotificationHub>
从控制器发送消息的正确方法是什么?
解决方案
任何人都可以分享描述如何以正确方式使用 IHubContext 的链接吗?
https://docs.microsoft.com/en-us/aspnet/core/signalr/hubcontext?view=aspnetcore-2.1
在您的示例代码中,用户 ID 是什么?Client.Client 用于 SignalR 连接 ID。您想在发送给特定用户时使用 UserId ( Clients.User
)
因为如果我可以直接从控制器发送消息,我只是混淆了我的 NotificationHub 的目的是什么?
如果您不想使用控制器,则可以使用集线器接收传入数据。如果你想支持纯 HTTP API,你可以使用控制器。如果您想使用 WebSockets(或 SignalR 支持的其他传输)接收传入数据,则可以使用 Hub。
它对于处理连接生命周期事件(如 OnConnectedAsync 和 OnDisconnectedAsync)也很有用。这使您可以在特定连接连接或断开连接时执行操作。
推荐阅读
- python - 当我尝试从下拉菜单中选择一个元素时,我不断收到错误消息
- java - 方法不在对象 myRecipeBox 中存储数据
- json - CHECK CONSTRAINT 使用正则表达式验证 JSON 字段
- javascript - 使用 Javascript 而不是 jQuery offset() 设置元素的动态位置
- typescript - 无法在 TypeScript 中使用新的 Promise()
- php - 如何通过从 SQL 中的相同数据集中缩小用户的数据集来过滤用户的数据集?- 61个加入限制问题
- r - 在 ggplot 中为趋势线添加单独的图例
- java - 关于获取 3 个实例变量并将其格式化为 HH:MM:SS + 更多的 Java 字符串格式化问题
- vb.net - API 中的舍入数 - VB.NET - CultureInfo
- c - 如何从 C(异步)执行 Lua 回调?