从Application Service实施通知

时间:2017-10-16 16:08:27

标签: c# notifications aspnetboilerplate

我试图实施"通知系统"来自我的申请服务。

我希望在成功完成所需的处理(由应用服务管理)后,通过abp.notify.info()向用户发出警告。

服务器端:

public async Task<bool> EsitoAllestimento(EsitoAllestimento data)
{
    await _notiticationPublisher.PublishAsync(
        "message"",
        null,
        null,
        NotificationSeverity.Info
    );
}

客户方:

abp.event.on('abp.notifications.received', function (userNotification) {
    abp.notify.info('message', 'text');
});

更新

目前,我根据应用层的电子邮件消息使用了不同的策略。

实际上,外部应用程序调用{​​{1}}(WebApi方法)来更新Web应用程序中的某些数据(并通知连接的用户处理结果)。

现在我计划使用SignalR通信,因为电子邮件通信有时会失败。

我已经定义了像ABP's SignalR Integration example这样的集线器类,除了从SERVER到CLIENT的通信外,一切正常。

如何在Application层或WebApi层使用EsitoAllestimento

1 个答案:

答案 0 :(得分:0)

来自Notification System的文档:

  

有两种向用户发送通知的方式:

     
      
  • 用户订阅到特定通知类型。然后,我们发布此类型的通知,该通知将发送给所有订阅的用户。这是 pub / sub 模型。
  •   
  • 我们可以直接向目标用户发送
  •   

Abp.AspNetCore.SignalR 程序包实现IRealTimeNotifier自动向客户端发送实时通知,因此您无需实施和调用自定义Hub

在您的情况下,您应指定目标用户。

  • 第一个参数是notification name

  • 第二个参数是"message"应该去的地方。

  • userIds参数是您应指定目标用户的位置。

例如,这显示了如何将消息发送到默认租户管理员和主机管理员:

var message = "message";

var defaultTenantAdmin = new UserIdentifier(1, 2);
var hostAdmin = new UserIdentifier(null, 1);

await _notificationPublisher.PublishAsync(
    "App.SimpleMessage",
    new MessageNotificationData(message),
    severity: NotificationSeverity.Info,
    userIds: new[] { defaultTenantAdmin, hostAdmin }
);

您不必在客户端实现事件侦听器,因为abp.notify.info是默认值。