因此,我试图进入Push API,并建立了一个非常基本的示例,其中包含一个空的service-worker.js和一个index.js,它们现在才触发订阅:
function subscribeUserToPush() {
return navigator.serviceWorker.register('service worker.js').then(function(registration) {
var subscribeOptions = {
userVisibleOnly: true,
applicationServerKey: urlBase64ToUint8Array(
'foobarkeyoffoobarness'
)
};
return registration.pushManager.subscribe(subscribeOptions);
}).then(function(pushSubscription) {
console.log('PushSubscription: ', pushSubscription);
return pushSubscription;
});
}
和我发回的订阅终结点类似“ fcm.googleapis.com/fcm/send/dfyodk6jd3c:APA91bETwSnoOpagCulOlD11XJu7savlJXp4hwEqKeqldHJxW6_WQTfjNTKjsT9JpY1au>。
现在我的问题是:实际上是否有可能(即使是个坏主意)拥有自定义的推送服务终结点,自托管解决方案?
Google firebase实际上对此有垄断权吗?
答案 0 :(得分:2)
offered link指出,每个浏览器都可以使用他们想要的任何推送服务,这是开发人员无法控制的
我需要在使用本地网络且无法访问Internet的组织中使用“推送通知”,但是事实证明,至少现在暂时服务人员的“推送通知”不适用于Intranet,也许不久的将来还会出现一些情况。解决方案中,有一种名为SignalR的替代技术,但是您可能会知道,当关闭浏览器选项卡时,它不起作用,因此与WbPush相反的SignalR无法唤醒关闭的Web浏览器。
也许唯一的希望是 dom.push.serverURL ,您可以在here中了解更多信息。 我还了解到Firefox使用Autopush作为推送服务。 以下是一些说明您不能执行的链接: WebPush without third party- Change Push provider
答案 1 :(得分:1)
如果有人感兴趣:https://developers.google.com/web/fundamentals/push-notifications/how-push-works
在订阅流程中,浏览器从以下位置请求订阅 消息传递服务器。每个浏览器供应商都有自己的消息传递 服务器,但您的浏览器知道要调用哪个服务器。