Как я могу получить пользователей 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где у меня нет сеанса с информацией о пользователе, поэтому я хочу, чтобы все пользователи Онлайн публиковали уведомления только им, а после этого вызывали мою работу, чтобы уведомить их.
- Использует ли модуль Zero по умолчанию Redis? Как сказал Альпер "Нет".
- Мне тоже нужно подключиться к SignalR через мой API? Добавление
app.MapSignalR();
в мой WebApi startup
, кажется, работает, но иногда нет, я что-то упускаю - Как я могу получить пользователей онлайн на веб-API (на стороне сервера)? Альтернативой, которую я нашел, было получение всех подписок (
GetSubscriptionsAsync
), и там у меня есть свой userId для отправки уведомлений.var onlineClients = _onlineClients.GetAllClients ();возвращается ноль
Спасибо