【问题标题】:server-side data push for web services用于 Web 服务的服务器端数据推送
【发布时间】:2015-08-05 19:40:28
【问题描述】:

我是一名网络程序员,在常规同步和异步网络服务方面经验丰富。因此,从 Web 服务器获取数据的常规方式是请求(拉取)或建立永久连接。

现在我问自己是否有可能以相反的方式运行它,以便服务器使用 HTML5 和 Javascript 等原生技术将新数据推送到客户端而无需客户端先前的请求。

总结:我正在寻找一种方法来实现服务器端推送系统,该系统可与任何现代网络浏览器(IE、FF、Chrome、Safari 等)一起使用,无需任何插件即可使用 HTML5 和 Javascript 等常规技术或其他软件。

只要网站打开,客户端就应该只监听新数据,并且如果新数据被推送,则应该发生来自服务器的唯一连接。它甚至必须通过 NAT 或防火墙工作。

主要原因是为了节省服务器负载和与许多连接的客户端进行数据传输。另请注意,并非每次推送都是广播,单客户端推送也必须可用。

如果没有额外的软件,这是否可能或仍然无法处理?

谢谢

【问题讨论】:

    标签: javascript html web-services push-notification web-push


    【解决方案1】:

    有WebSockets技术,它允许客户端和服务器之间连续的全双工连接流。更详细的在这里https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications

    WebSocket 是标准化协议,每个服务器都支持。

    【讨论】:

      【解决方案2】:

      虽然尚未在所有浏览器中实现,但您可以尝试使用标准的Web Push API

      您可以在文章Using the Push APIPush Notifications on the Open Web 中阅读更多信息。

      Push API 是一项 W3C 标准,可让您让您的 Web 应用程序的用户在任何时候(甚至在后台)都能收到推送通知;即,即使您的 Web 应用程序没有在用户设备的前台运行(或者即使浏览器当前没有在用户设备上运行)。

      它使用Service Workers 来处理使用普通推送服务发送的消息,并允许您的 Web 应用对其收到的推送通知做出反应。

      它向脚本公开了一个新的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 年 2 月 12 日更新

      Microsoft Edge 团队最近将 the status of Web Push support in Edge 移至 路线图优先级:高 — 我们打算很快开始开发。由于 Chrome 和 Firefox 已经支持它,这意味着 一旦 Edge 获得该支持,您就可以向 Web 应用的 Edge、Chrome 和 Firefox 用户发送标准推送通知。

      【讨论】:

        猜你喜欢
        • 2012-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        相关资源
        最近更新 更多