SignalR:没有持久通知的服务器广播

Posted

技术标签:

【中文标题】SignalR:没有持久通知的服务器广播【英文标题】:SignalR: Server broadcast without persisting notifications 【发布时间】:2018-10-30 04:45:33 【问题描述】:

我想通知在线用户一个新的聊天室已经创建。我不需要在离线用户上线后通知他们。

我查看了AbpNotifications,但这似乎会持续通知并在用户上线后通知用户。我只想通知当前在线的用户。

我查看了 SignalR 集成,但找不到服务器发起消息的方法。例如,我可能希望ApplicationService.ChatRoom.Create 方法启动消息。

我确实找到了有关如何让 SignalR(在 ABP 之外)发起消息的文档:https://docs.microsoft.com/en-us/aspnet/signalr/overview/getting-started/tutorial-server-broadcast-with-signalr#server

【问题讨论】:

【参考方案1】:

注入并使用IRealTimeNotifier

private async Task SendRealTimeNotificationsAsync(string message, UserIdentifier[] users)

    var data = new MessageNotificationData(message);
    var notification = new TenantNotification  Data = data ;
    var userNotifications = users.Select(user => new UserNotification
    
        TenantId = user.TenantId,
        UserId = user.UserId,
        Notification = notification
    );

    await RealTimeNotifier.SendNotificationsAsync(userNotifications.ToArray());

更多信息:https://aspnetboilerplate.com/Pages/Documents/Notification-System#real-time-notifications

【讨论】:

以上是关于SignalR:没有持久通知的服务器广播的主要内容,如果未能解决你的问题,请参考以下文章

SignalR的简单实现消息广播

SignalR系列教程:服务器广播与主动数据推送

使用 SignalR 集线器向特定连接用户广播消息

在后台主机中托管SignalR服务并广播心跳包

SignalR 广播消息在停止/启动后重复

SignalR学习系列4. SignalR广播程序