我试图实施"通知系统"来自我的申请服务。
我希望在成功完成所需的处理(由应用服务管理)后,通过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
?
答案 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
是默认值。