Я пытаюсь использовать уведомления в режиме реального времени.Я перепробовал все примеры, но когда я SendNotificationsAsync
, мой клиент не получает его.
Кроме того, таблица AbpNotifications
всегда пуста.
Запуск:
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.UseRedis("redis", 6379, "", "ChecklistCache");
app.MapSignalR();
}
}
Sub:
public async Task Subscribe_NewAlert(int? tenantId, long userId)
{
await _notificationSubscriptionManager.SubscribeAsync(new UserIdentifier(tenantId, userId), "NewAlert");
}
Паб:
public async Task Publish_NewAlert(string alert)
{
var msg = new MessageNotificationData($"New alert created! {alert}");
await _notiticationPublisher.PublishAsync("NewAlert", msg, severity: NotificationSeverity.Info);
}
Моя работа:
[Abp.Domain.Uow.UnitOfWork]
public override void Execute(UserIdentifier args)
{
var notifications = _userNotificationManager.GetUserNotifications(args);
Abp.Threading.AsyncHelper.RunSync(() => _realTimeNotifier.SendNotificationsAsync(notifications.ToArray()));
}
Я проверил _realTimeNotifier
и мой UserId
равно нулю, но IOnlineClientManager
устанавливает пользователя автоматически.Где я могу установить свой идентификатор пользователя?
Чтобы использовать систему уведомлений ABP, я должен иметь все общие таблицы, которые создает ABP?(AbpUser
, AbpTenant
, AbpRoles
, разрешения и т. Д.) Можно ли изменить имена этих таблиц и имена столбцов?Если я использую внешний логин и у меня нет всей этой информации, мне все еще нужны эти таблицы?
Когда я устанавливаю свой идентификатор во время выполнения, это работает.Кроме того, после отображения уведомления оно не удаляется из базы данных, поэтому оно отображается каждый раз.Нужно ли удалять вручную?
Позвольте мне попытаться уточнить, что мне нужно:
Каждый пользователь, который входит на мой сайт, подпишется на "NewAlert"
.
Мой API получает "NewAlerts"
, поэтому API необходимо будет отправить это оповещение всем подписчикам.Но после этого мне нужно отправлять уведомления в режиме реального времени пользователям на сайте.Что я не знаю, как сделать из моего веб-API.
Теперь он работает, после того как я ввел аутентификацию на своем сайте.Но моя проблема сейчас в том, что мои уведомления не имеют срока действия.Каждый раз, когда я публикую уведомление, я показываю своему клиенту все уведомления, которые находятся в таблице AbpUserNotifications
.
Когда истекает срок действия уведомлений?Насколько я понимаю, когда я публикую уведомление, в таблице AbpUserNotifications
создается запись, а затем я показываю ее клиенту.Но когда я публикую другое уведомление, оно показывает два уведомления моему клиенту.Нужно ли контролировать свои уведомления вручную?