Фоновые задания системы уведомлений в реальном времени ABP - PullRequest
0 голосов
/ 11 декабря 2018

Как я могу получить пользователей Online на стороне сервера, чтобы отправлять уведомления только пользователям Online, используя фоновое задание?

Фоновое задание:

public async Task SendNotifications()
{
    await _backgroundJobManager.EnqueueAsync<NotificationJob,
        UserIdentifier>(new UserIdentifier(_session.TenantId, _session.UserId.Value), delay: TimeSpan.FromSeconds(3));
}

public override void Execute(UserIdentifier args)
{
    var notifications = _userNotificationManager.GetUserNotifications(args);    
    Abp.Threading.AsyncHelper.RunSync(() => _realTimeNotifier.SendNotificationsAsync(notifications.ToArray()));
}

Моя работа на APIгде у меня нет сеанса с информацией о пользователе, поэтому я хочу, чтобы все пользователи Онлайн публиковали уведомления только им, а после этого вызывали мою работу, чтобы уведомить их.

  1. Использует ли модуль Zero по умолчанию Redis? Как сказал Альпер "Нет".
  2. Мне тоже нужно подключиться к SignalR через мой API? Добавление app.MapSignalR(); в мой WebApi startup, кажется, работает, но иногда нет, я что-то упускаю
  3. Как я могу получить пользователей онлайн на веб-API (на стороне сервера)? Альтернативой, которую я нашел, было получение всех подписок (GetSubscriptionsAsync), и там у меня есть свой userId для отправки уведомлений.var onlineClients = _onlineClients.GetAllClients ();возвращается ноль

Спасибо

...