Web 服务的服务器端数据推送
server-side data push for web services
我是一名网络程序员,在常规同步和异步网络服务方面经验丰富。所以从网络服务器获取数据的正常方法是请求(拉取)或建立永久连接。
现在我问自己是否有可能 运行 反过来,这样服务器就可以通过使用像 HTML5 和 Javascript.
总结:我正在寻找一种方法来实现服务器端推送系统,该系统适用于任何现代网络浏览器(IE、FF、Chrome、Safari 等),方法是使用常规技术,例如HTML5 和 Javascript 没有任何插件或附加软件。
只要网站打开,客户端就应该只监听新数据,如果推送新数据,则应该只与服务器建立连接。即使通过 NAT 或防火墙,它也必须工作。
主要是为了节省服务器负载和与许多连接的客户端的数据传输。另请注意,并非每次推送都是广播,单客户端推送也必须可用。
如果没有额外的软件,这是否可能或仍然无法处理?
谢谢
有WebSockets技术,它允许客户端和服务器之间连续的全双工连接流。更详细的在这里 https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications.
WebSocket是标准化协议,各服务器都支持。
虽然尚未在所有浏览器中实现,但您可以尝试使用标准 Web Push API。
您可以在文章 Using the Push API & Push 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-02-12更新
Microsoft Edge 团队最近将 the status of Web Push support in Edge 移至 路线图优先级:高 — 我们打算尽快开始开发。由于 Chrome 和 Firefox 已经提供了对它的支持,这意味着
一旦 Edge 获得支持,您将能够向 Edge、Chrome 和您的 Web 应用程序的 Firefox 用户发送标准推送通知。
我是一名网络程序员,在常规同步和异步网络服务方面经验丰富。所以从网络服务器获取数据的正常方法是请求(拉取)或建立永久连接。
现在我问自己是否有可能 运行 反过来,这样服务器就可以通过使用像 HTML5 和 Javascript.
总结:我正在寻找一种方法来实现服务器端推送系统,该系统适用于任何现代网络浏览器(IE、FF、Chrome、Safari 等),方法是使用常规技术,例如HTML5 和 Javascript 没有任何插件或附加软件。
只要网站打开,客户端就应该只监听新数据,如果推送新数据,则应该只与服务器建立连接。即使通过 NAT 或防火墙,它也必须工作。
主要是为了节省服务器负载和与许多连接的客户端的数据传输。另请注意,并非每次推送都是广播,单客户端推送也必须可用。
如果没有额外的软件,这是否可能或仍然无法处理?
谢谢
有WebSockets技术,它允许客户端和服务器之间连续的全双工连接流。更详细的在这里 https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications.
WebSocket是标准化协议,各服务器都支持。
虽然尚未在所有浏览器中实现,但您可以尝试使用标准 Web Push API。
您可以在文章 Using the Push API & Push 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-02-12更新
Microsoft Edge 团队最近将 the status of Web Push support in Edge 移至 路线图优先级:高 — 我们打算尽快开始开发。由于 Chrome 和 Firefox 已经提供了对它的支持,这意味着 一旦 Edge 获得支持,您将能够向 Edge、Chrome 和您的 Web 应用程序的 Firefox 用户发送标准推送通知。