我是一名网络程序员,在常规同步和异步网络服务方面经验丰富。因此,从 Web 服务器获取数据的正常方法是请求(拉取)或建立永久连接。
现在我问自己是否有可能以相反的方式运行它,以便服务器通过使用 HTML5 和 Javascript 等 native 技术将新数据推送到客户端,而无需客户端先前的请求。
总结:我正在寻找一种方法来实现服务器端推送系统,该系统适用于任何现代网络浏览器(IE、FF、Chrome、Safari 等),通过使用 HTML5 和 Javascript 等常规技术,无需任何插件或其他软件。
只要网站打开,客户端就应该只监听新数据,如果推送新数据,则应该只与服务器建立连接。它甚至必须能够穿过 NAT 或防火墙。
主要的原因是为了节省服务器负载和与许多连接的客户端的数据传输。另请注意,并非每次推送都是广播,还必须提供单个客户端推送。
如果没有额外的软件,这是否可能或仍然无法处理?
谢谢
最佳答案
虽然尚未在所有浏览器中实现,但您可以尝试使用标准 Web Push API .
您可以在文章中阅读更多信息 Using the Push API & Push Notifications on the Open Web .
Push API 是一项 W3C 标准,可让您的 Web 应用程序的用户随时获得推送通知——即使是在后台;即,即使您的 Web 应用程序未在用户设备的前台运行(或者即使浏览器当前未在用户设备上运行)。
它使用 Service Workers处理使用通用推送服务发送的消息,并允许您的 Web 应用对其接收到的推送通知使用react。
它向脚本公开一个新的 push
事件。这是来自 Push Notifications on the Open Web 的简单代码示例展示如何使用 push
事件显示实际通知的文章。
self.addEventListener('push', function(event) {
console.log('Received a push message', event);
var title = 'Yay a message.';
var body = 'We have received a push message.';
var icon = '/images/icon-192x192.png';
var tag = 'simple-push-demo-notification-tag';
event.waitUntil(
self.registration.showNotification(title, {
body: body,
icon: icon,
tag: tag
})
);
});
更新 2016-02-12
Microsoft Edge 团队最近搬家了 the status of Web Push support in Edge 路线图优先级:高 — 我们打算尽快开始开发。由于 Chrome 和 Firefox 已经支持它,这意味着 一旦 Edge 获得支持,您就可以向您的 Web 应用的 Edge、Chrome 和 Firefox 用户发送标准推送通知。
关于javascript - Web 服务的服务器端数据推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419455/