【问题标题】:Send message from controller Asp.Net Core SignalR从控制器 Asp.Net Core SignalR 发送消息
【发布时间】:2018-12-25 07:29:11
【问题描述】:

谁能分享描述如何以正确方式使用 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);

IHubContext<NotificationHub> 类型的 hubcontext

从控制器发送消息的正确方法是什么?

【问题讨论】:

    标签: .net asp.net-core .net-core signalr asp.net-core-signalr


    【解决方案1】:

    谁能分享描述如何正确使用 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 等连接生命周期事件也很有用。这使您可以在特定连接连接或断开连接时执行操作。

    【讨论】:

    • 所以如果我只想从控制器发送直接消息,我的 NotificationHub 没有使用吗?消息直接在 NotificationHub 周围发送?
    • > 所以如果我只想从控制器发送直接消息,我的 NotificationHub 没有使用吗?它总是被使用。它只是不用于传入数据。
    猜你喜欢
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2019-12-24
    • 2018-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多