簡體   English   中英

ABP實時通知系統UserId為空

[英]ABP real-time notification system UserId is null

我正在嘗試使用實時通知。 我嘗試了所有示例,但是當我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()));
}
  1. 我檢查了_realTimeNotifier並且我的UserId為空,但IOnlineClientManager自動設置用戶。 我在哪里可以設置我的用戶 ID?

  2. 要使用 ABP 通知系統,我是否必須擁有 ABP 創建的所有公共表? AbpUserAbpTenantAbpRoles 、權限等)我可以更改這些表的名稱和列名稱嗎? 如果我使用外部登錄但我沒有所有這些信息,我還需要這些表嗎?

  3. 當我在執行時設置我的 ID 時,它可以工作。 此外,顯示通知后,它不會從數據庫中刪除,因此每次都會顯示。 我必須手動刪除嗎?

讓我試着澄清我需要什么:

  • 每個登錄我網站的用戶都會訂閱"NewAlert"

  • 我的 API 收到"NewAlerts"因此 API 需要將此警報推送給所有訂閱者。 但在那之后,我需要向網站上的用戶發送實時通知。 我不知道如何從我的 Web API 中做到這一點。

現在它正在工作,在我對我的網站實施身份驗證之后。 但我現在的問題是我的通知不會過期。 每次發布通知時,我都會向我的客戶顯示AbpUserNotifications表上的所有通知。

通知什么時候到期? 我的理解是,當我發布通知時,會在表AbpUserNotifications上創建一條記錄,然后向客戶端顯示。 但是當我發布另一個通知時,它向我的客戶顯示了兩個通知。 我需要手動控制我的通知嗎?

實時通知

我檢查了 _realTimeNotifier 並且我的 UserId 為空,但是 IOnlineClientManager 自動設置了一個用戶,我在哪里可以設置我的用戶 ID?

它由身份驗證(授權)系統從 cookie 或 JWT 令牌自動設置。

持續通知

要使用 abp 通知系統,我必須擁有 abp 框架創建的所有公共表嗎? (abpUser、AbpTenant、AbpRoles、權限等)我也可以更改這些表名和列名嗎? 如果我使用外部登錄,我沒有所有這些信息,還需要那些表嗎?

不,你不需要所有的表。 您可以實現自己的INotificationStore和服務。

零模塊,它使用存儲庫實現存儲,創建和使用公共表。

外部登錄確實會在您的應用程序的租戶中創建一個用戶。 這就是大多數應用程序的工作方式。

當我在執行時設置我的 ID 工作時,在顯示通知后,它沒有從數據庫中刪除,所以每次都顯示,我必須手動刪除嗎?

現在正在工作,在我對我的網站實施身份驗證后,但我現在的問題是我的通知不會過期,每次我發布通知時都會向我的客戶端顯示我在 AbpUserNotifications 表上的通知。

通知何時到期? 我的理解是,當我發布通知時,會在表 AbpUserNotifications 上創建一條記錄,並將它們顯示給客戶端,但是當我發布另一個通知時,會向我的客戶端顯示兩個通知。 我需要手動控制我的通知嗎?

通知不會過期。 您應該將其標記為已讀(類似於 Stack Overflow)或將其刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM