3

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

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

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

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

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

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

谢谢

4

2 回答 2

2

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

您可以在使用开放 Web 上的推送 API推送通知的文章中阅读更多信息。

Push API 是一个 W3C 标准,让您可以让您的 Web 应用程序的用户随时获得推送通知——即使是在后台;即,即使您的 Web 应用程序没有在用户设备的前台运行(或者即使浏览器当前没有在用户设备上运行)。

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

push它向脚本公开一个新事件。这是Open Web 上的 Push Notifications文章中的一个简单代码示例,它展示了如何使用该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 团队最近将 Edge中 Web 推送支持的状态移至路线图优先级:高 - 我们打算很快开始开发。由于 Chrome 和 Firefox 已经提供了对它的支持,这意味着一旦 Edge 获得支持,您将能够向 Web 应用程序的 Edge、Chrome 和 Firefox 用户发送标准推送通知。

于 2015-12-28T00:55:29.037 回答
1

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

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

于 2015-05-24T03:18:51.077 回答