实时通知未发送 [英] Realtime notification not sent

查看:170
本文介绍了实时通知未发送的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在ASP.NET Boilerplate中显示实时通知,但未发送。

 公共替代异步Task< MessagesDto> Create(MessagesCreateDto input)
{
var MessagesCore = ObjectMapper.Map< MessagesCore>(输入);
MessagesCore.UserId = Convert.ToInt32(AbpSession.UserId);
MessagesCore.CreationId = Convert.ToInt32(AbpSession.UserId);
MessagesCore.FromUserId = Convert.ToInt32(AbpSession.UserId);
MessagesCore.CreationTime = DateTime.Now;
MessagesCore.LastModificationId = Convert.ToInt32(AbpSession.UserId);
MessagesCore.LastModificationTime = DateTime.Now;

_stateRepository.Insert(MessagesCore);
CurrentUnitOfWork.SaveChanges();

UserIdentifier标识符= new UserIdentifier(1,input.ToUserId);
等待_notificationSubscriptionManager.SubscribeAsync(new UserIdentifier(1,input.ToUserId), NewMessage);
等待_notificationPublisher.PublishAsync( NewMessage,新的SentMessageNotificationData( Test,新消息),userIds:new [] {标识符});

return MapToEntityDto(MessagesCore);
}

SentMessage 通知数据类:

  [可序列化] 
公共类SentMessageNotificationData:NotificationData
{
公共字符串SenderUserName {get;组; }

公用字串FriendshipMessage {get;组; }

public SentMessageNotificationData(字符串senderUserName,字符串friendshipMessage)
{
SenderUserName = senderUserName;
FriendshipMessage =友谊消息;
}
}

数据存储在通知表中,但没有通知消息在客户端显示。



app.component.ts 中的SignalR代码:



<前置类= lang-js prettyprint-override> ngOnInit():void {
if(this.appSession.application.features ['SignalR']){
SignalRHelper。 initSignalR();
}

abp.event.on('abp.notifications.received',userNotification => {
abp.notifications.showUiNotifyForUserNotification(userNotification);
如果(userNotification.notification.data.type ==='Abp.Notifications.LocalizableMessageNotificationData'){
var localizedText = abp.localization.localize(
userNotification.notification.data.message.name,
userNotification.notification.data.message.sourceName
);

$ .each(userNotification.notification.data.properties,函数(键,值){
localizedText = localizedText .replace('{'+ key +'}',value);
});

alert('New localized notification:'+ localizedText);
} else if (userNotification.notification.data.type ==='Abp.Notifications.MessageNotificationData'){
alert('New simple notification:'+ userNotification.notification.data.message);
}
//桌面n otification
Push.create( AbpZeroTemplate,{
正文:userNotification.notification.data.message,
图标:abp.appPath +'assets / app-logo-small.png',
超时:6000,
onClick:function(){
window.focus();
this.close();
}
});
});
}


解决方案


我在netcoreapp2.0上





  • SignalR仍在 1.0.0上-alpha2-final for .NET Core。

  • 2.x 仅在第一季度稳定2018年第二季度。



更新1



Abp.AspNetCore.SignalR NuGet包已发布。



阅读 SignalR AspNetCore集成的文档。



您可以尝试,并进行必要的 chan ges 到您的文件。 或者只是等待它发布。



更新2



您可以现在下载 v3.4.1 带有AspNetCore的模板.SignalR预览。


I am trying to display realtime notification in ASP.NET Boilerplate, but it is not sent.

public override async Task<MessagesDto> Create(MessagesCreateDto input)
{
    var MessagesCore = ObjectMapper.Map<MessagesCore>(input);            
    MessagesCore.UserId = Convert.ToInt32(AbpSession.UserId);
    MessagesCore.CreationId = Convert.ToInt32(AbpSession.UserId);
    MessagesCore.FromUserId = Convert.ToInt32(AbpSession.UserId);
    MessagesCore.CreationTime = DateTime.Now;
    MessagesCore.LastModificationId = Convert.ToInt32(AbpSession.UserId);
    MessagesCore.LastModificationTime = DateTime.Now;

    _stateRepository.Insert(MessagesCore);
    CurrentUnitOfWork.SaveChanges();

    UserIdentifier identifier = new UserIdentifier(1,input.ToUserId);
    await _notificationSubscriptionManager.SubscribeAsync(new UserIdentifier(1, input.ToUserId), "NewMessage");
    await _notificationPublisher.PublishAsync("NewMessage", new SentMessageNotificationData("Test", "New Message"), userIds: new[] { identifier });

    return MapToEntityDto(MessagesCore);
}

SentMessage notification data class:

[Serializable]
public class SentMessageNotificationData : NotificationData
{
    public string SenderUserName { get; set; }

    public string FriendshipMessage { get; set; }

    public SentMessageNotificationData(string senderUserName, string friendshipMessage)
    {
        SenderUserName = senderUserName;
        FriendshipMessage = friendshipMessage;
    }
}

Data is stored in notification table, but no notification message is displaying in client side.

SignalR code in app.component.ts:

ngOnInit(): void {
  if (this.appSession.application.features['SignalR']) {
    SignalRHelper.initSignalR();
  }

  abp.event.on('abp.notifications.received', userNotification => {
    abp.notifications.showUiNotifyForUserNotification(userNotification);
    if (userNotification.notification.data.type === 'Abp.Notifications.LocalizableMessageNotificationData') {
        var localizedText = abp.localization.localize(
            userNotification.notification.data.message.name,
            userNotification.notification.data.message.sourceName
        );

        $.each(userNotification.notification.data.properties, function (key, value) {
            localizedText = localizedText.replace('{' + key + '}', value);
        });

        alert('New localized notification: ' + localizedText);
    } else if (userNotification.notification.data.type === 'Abp.Notifications.MessageNotificationData') {
        alert('New simple notification: ' + userNotification.notification.data.message);
    }
    //Desktop notification
    Push.create("AbpZeroTemplate", {
      body: userNotification.notification.data.message,
      icon: abp.appPath + 'assets/app-logo-small.png',
      timeout: 6000,
      onClick: function () {
        window.focus();
        this.close();
      }
    });
  });
}

解决方案

i am on netcoreapp2.0

  • SignalR is still on 1.0.0-alpha2-final for .NET Core.
  • 2.x will only be stable in Q1/Q2 2018.

Update 1

Abp.AspNetCore.SignalR NuGet package has been published.

Read the documentation for SignalR AspNetCore Integration.

You can try it and make the necessary changes to your files. Or just wait for it to be released.

Update 2

You can now download v3.4.1 of the template with the AspNetCore.SignalR preview.

这篇关于实时通知未发送的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆