【发布时间】:2018-12-05 17:26:03
【问题描述】:
我正在尝试使用实时通知。我尝试了所有示例,但是当我SendNotificationsAsync 时,我的客户没有收到它。
另外,AbpNotifications 表总是空的。
启动:
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.UseRedis("redis", 6379, "", "ChecklistCache");
app.MapSignalR();
}
}
子:
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自动设置了一个用户。我在哪里可以设置我的用户 ID?要使用 ABP 通知系统,我必须拥有 ABP 创建的所有公用表吗? (
AbpUser、AbpTenant、AbpRoles、权限等)我可以更改这些表的名称和列名吗?如果我使用外部登录并且我没有所有这些信息,我还需要这些表吗?当我在执行时设置我的 ID 时,它可以工作。此外,通知显示后,它不会从数据库中删除,因此每次都会显示。我必须手动删除吗?
让我试着澄清一下我需要什么:
每个登录我网站的用户都会订阅
"NewAlert"。我的 API 收到
"NewAlerts",因此 API 需要将此警报推送给所有订阅者。但在那之后,我需要在网站上向用户发送实时通知。我不知道如何通过我的 Web API 执行此操作。
现在它正在工作,在我对我的网站实施身份验证之后。但我现在的问题是我的通知不会过期。每次发布通知时,我都会向我的客户显示 AbpUserNotifications 表中的所有通知。
通知何时过期?我的理解是,当我发布通知时,会在表AbpUserNotifications 上创建一条记录,然后我会显示给客户。但是当我发布另一个通知时,它会向我的客户显示两个通知。我需要手动控制通知吗?
【问题讨论】:
标签: c# .net notifications signalr aspnetboilerplate