所以我正在尝试进入推送 API,我设置了一个非常基本的示例.js其中包含一个空的服务工作者和一个索引.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_WQTfjNTKjsT9JpY1auK....">
现在我的问题是:是否真的有可能(即使这是一个坏主意(拥有一个自定义推送服务端点,一个自托管解决方案?
谷歌火力基地真的垄断了这个吗?
正如提供的链接所述,每个浏览器都可以使用他们想要的任何推送服务,这是开发人员无法控制的
我需要在使用本地网络并且无法访问互联网的组织中使用推送通知,但事实证明服务工作者推送通知至少目前不适合 Intranet,也许在不久的将来会有一些解决方案,有一个名为 SignalR 技术的替代方案,但您可能知道当浏览器选项卡关闭时它不起作用,因此与 WbPush 相反的 SignalR 无法唤醒关闭的网络浏览器。
也许唯一的希望是dom.push.serverURL,你可以在这里阅读更多关于它的信息。 我还了解到 Firefox 使用 Autopush 作为推送服务。 这里有一些链接说你不能: 没有第三方的WebPush- 更改推送提供程序
如果有人感兴趣:https://developers.google.com/web/fundamentals/push-notifications/how-push-works
在订阅流程中,浏览器请求订阅来自 消息服务器。每个浏览器供应商都有自己的消息传递 服务器,但您的浏览器知道要调用哪个服务器。