SignalR: сервер транслируется без постоянных уведомлений - PullRequest
0 голосов
/ 30 октября 2018

Я хотел бы уведомить пользователей онлайн о том, что создан новый чат. Мне не нужно уведомлять офлайн-пользователей, когда они выходят в сеть.

Я посмотрел на 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 Ответ

0 голосов
/ 06 ноября 2018

Внедрить и использовать 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

...