gpt4 book ai didi

c# - Asp Net Core Web 推送通知

转载 作者:IT王子 更新时间:2023-10-29 04:28:03 30 4
gpt4 key购买 nike

主要目标是向站点添加发送网络通知以弹出系统通知以提醒使用 Html5 Push API 和服务 worker 的用户的能力。不使用只能在站点打开时运行客户端脚本的 SignalR。如果网站关闭,也应该能够发送通知,如前所述here - 这是可能的。

Here是一篇关于 Push API 的好文章,提供了很好的 example但它使用 NodeJS 作为服务器和 web-push向通知服务发送请求的组件。

找不到任何 .NET 示例。我考虑了两种解决方法。

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

When you send a push message without data, you simply send it to the endpoint URL using an HTTP POST request. However, when the push message contains data, you need to encrypt it, which is quite a complex process.

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

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

经过课题研究

3个案例:

  1. HTTP + 旧浏览器 + IE 所有版本 - 使用 SignalR + 使用 html+js 呈现通知
  2. 支持 Notification API 的 HTTP + 现代浏览器(Chrome、Firefox、Safary、Opera?、Edge)。 - 使用 SignalR 并使用 js 使用 new Notification('Message')
  3. 触发 native 浏览器通知
  4. HTTPS + Chrome(移动),支持 Push API,使用 service-worker 触发关闭站点的 native 通知。移动版 Chrome 只能使用 service-worker 创建通知。

事情变得复杂了。怎么了?

可能的解决方案:

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

当前解决方案。添加于:2017-11-22

  • 不支持离线客户端通知
  • 不支持移动设备
  • 对于 Chrome v62+ 将所有项目移动到 https - link
  • 使用 SignalR (0.2.0) 向在线客户端发送推送
  • 使用pnotify v3+ 以显示 native desctop 或 html 通知。
  • 正在等待 pnotify v4.0.0(作者 promise 支持 chrome 移动版。Issue)
  • 等待带有 SignalR 1.0 的 .NET Core 2.1 为它重写整个项目。

最佳答案

你说的节点库已经移植到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);
}

关于c# - Asp Net Core Web 推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42304503/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com