主要目标是添加网站发送Web通知的能力,弹出系统通知以使用Html5推送API和服务工作人员提醒用户。 不使用SignalR,它只能在站点打开时运行客户端脚本。也应该能够发送通知,如果网站已关闭,如上所述here - 这是可能的。Asp Net核心Web推送通知
Here即将推式API好文章,并提供了良好的example 但它使用的的NodeJS服务器和web-push组件将请求发送到通知服务。
找不到任何.NET示例。我想到了两种解决方法。
首先,是写一切从基础上推式API文章note有关服务器划伤:
当您发送到无数据的推送消息,你可以将它发送到使用HTTP POST请求的端点URL。但是,当推送消息包含数据时,您需要对其进行加密,这是一个非常复杂的过程。
其次,就是用AspNetCore.NodeServices(article它)来执行的node.js脚本文件
是否有更多的解决方案?也许存在这样的现成解决方案?
学科研究
3案件后:
- HTTP +旧的浏览器+ IE所有版本 - 使用SignalR +渲染使用通知HTML + JS
- HTTP +现代浏览器(Chrome浏览器, Firefox,Safary,Opera?,Edge)支持Notification API。 - 使用SignalR并使用js触发原生浏览器通知使用
new Notification('Message')
- 支持Push API的HTTPS + Chrome(Mobile)可使用服务工作人员触发关闭站点的本机通知。 Chrome的移动版本只能使用服务人员创建通知。
变得复杂了。哪里不对?
可能的解决方案:
对于1,2例发现this库。认为这是一个良好的前端解决方案,具有良好的后备支持。 3例仍不知如何是好。
当前的解决方案。补充:2017年11月22日
- 没有离线客户通知支持
- 没有移动支持
- 使用Chrome V62 +移动所有项目HTTPS - link
- 使用SignalR(0.2。0)用于发送推送到在线客户端
- 使用pnotify v3 +显示本机桌面或html通知。
- 等待pnotify V4.0.0(作者承诺Chrome移动设备的支持。Issue)
- 等待.NET 2.1的核心与SignalR 1.0到整个项目重写它。
你有什么理由不使用SignalR - 这将是能够从后台,在那里你然后在回调与反应通知你的客户HTML5推送API。 –
客户希望通过从服务工作者脚本调用ServiceWorkerRegistration.showNotification生成的浏览器在移动设备和桌面上查看浏览器通知。因此,SignallR可以调用它,然后网站当前打开,但如果它关闭,则需要通知API。 – aleha
您可以使用[Pushpad](https://pushpad.xyz/docs/pushpad_pro_getting_started)及其[REST API](https://pushpad.xyz/docs/rest_api)(请参阅'POST/projects/PROJECT_ID/notifications' )。 – collimarco