Asp Net Core Web推送通知

ale*_*eha 25 c# web-push push-api asp.net-core asp.net-core-webapi

主要目标是增加站点发送Web通知的能力,以弹出系统通知,以使用Html5 Push API和服务工作人员提醒用户.不使用SignalR,它只能在打开网站时运行客户端脚本.也应该是,如果网站被关闭,如提及发布通知的能力在这里 -这是可能的.

是关于Push API的好文章并提供了很好的示例 但是它使用NodeJS作为服务器和web-push组件来向通知服务发送请求.

找不到任何.NET示例.我想到了两个解决方法.

首先,是基于关于服务器的Push API文章说明从头开始编写所有内容:

当您发送没有数据的推送消息时,您只需使用HTTP POST请求将其发送到端点URL.但是,当推送消息包含数据时,您需要对其进行加密,这是一个非常复杂的过程.

其次,是使用AspNetCore.NodeServices(关于它的文章)来执行node.js脚本文件

还有更多解决方案吗?也许存在现成的解决方案?

经过学科研究

3例:

  1. HTTP +旧浏览器+ IE所有版本 - 使用信号R +使用html + js渲染通知
  2. HTTP +现代浏览器(Chrome,Firefox,Safary,Opera?,Edge),支持Notification API. - 使用SignalR并使用js触发本机浏览器通知new Notification('Message')
  3. HTTPS + Chrome(移动版),支持Push API,可以使用服务工作者触发已关闭网站的本机通知.移动版Chrome只能使用service-worker创建通知.

它变得复杂了.怎么了?

可能的解决方案:

对于1和2个案例找到了存储库.认为这是一个很好的前端解决方案,具有良好的后备支持.对于3个案例仍然不知道该怎么做.

当前解决方案 补充:2017-11-22

  • 没有脱机客户端通知支持
  • 没有移动支持
  • 对于Chrome v62 +将所有项目移至https - 链接
  • 使用SignalR(0.2.0)将推送发送到在线客户端
  • 使用pnotify v3 +显示本机desctop或html通知.
  • 正在等待pnotify v4.0.0(作者承诺提供Chrome移动支持.问题)
  • 等待带有SignalR 1.0的.NET Core 2.1将整个项目重写到它.

Áng*_*ela 7

您提到的节点库已移植到c#:web-push-csharp.

以下是直接从其网站获取的简化用法示例:

var pushEndpoint = @"https://fcm.googleapis.com/fcm/send/efz_TLX_rLU:APA91bE6U0iybLYvv0F3mf6uDLB6....";
var p256dh = @"BKK18ZjtENC4jdhAAg9OfJacySQiDVcXMamy3SKKy7FwJcI5E0DKO9v4V2Pb8NnAPN4EVdmhO............";
var auth = @"fkJatBBEl...............";

var subject = @"mailto:example@example.com";
var publicKey = @"BDjASz8kkVBQJgWcD05uX3VxIs_gSHyuS023jnBoHBgUbg8zIJvTSQytR8MP4Z3-kzcGNVnM...............";
var privateKey = @"mryM-krWj_6IsIMGsd8wNFXGBxnx...............";

var subscription = new PushSubscription(pushEndpoint, p256dh, auth);
var vapidDetails = new VapidDetails(subject, publicKey, privateKey);

var webPushClient = new WebPushClient();
try
{
    webPushClient.SendNotification(subscription, "payload", vapidDetails);
}
catch (WebPushException exception)
{
    Console.WriteLine("Http STATUS code" + exception.StatusCode);
}
Run Code Online (Sandbox Code Playgroud)