http - 是否有真正的服务器通过 http 推送?

标签 http browser push long-polling

我知道有办法伪造它,轮询(或长轮询)但是有没有办法让服务器联系浏览器来推送信息?

任何一个轮询选项都会浪费服务器上的资源,并且根据服务器的不同可以将其锁定(例如 apache 和 iis)。

似乎很多站点都在使用长轮询通过 http 伪造服务器端推送机制。在浏览器中内置一个真正的推送协议(protocol)不是更好吗?

有哪些服务器友好的选项可以将(虚假或其他)信息推送到网络浏览器?

最佳答案

I know there are ways to fake it, polling (or long polling) but is there any way to have the server contact the browser to push out information?

客户端必须首先与服务器建立连接。服务器无法联系 Web 客户端。

Either polling option wastes resources on the server and depending on the server can lock it up (apache and iis for example).

没错。 频繁轮询效率低下,这是我们转向具有持久连接的推送世界的原因之一。 WebSockets 将是最好的解决方案。我为 Pusher 工作,一种托管的实时 WebSocket 解决方案,我们已经看到社区对这项技术的广泛采用,认为这是解决资源和实时通信问题的最佳解决方案。

Seems like a lot of sites are using long polling to fake a server-side push mechanism over http. Wouldn't it just be better to have a true push protocol built into a browser?

是的,这就是我们现在拥有 WebSocket 的原因。 Web 浏览器的 HTTP 解决方案最终是一种 hack,并且不能在浏览器之间一致地(以相同的方式)工作。

What options are there that are server friendly to push (fake or otherwise) information to web browsers?

  • HTTP 长轮询:连接保持打开状态,直到服务器收到新信息。 注意:这与标准轮询不同,在标准轮询中,请求新信息可能完全是在浪费时间。
  • HTTP Streaming:这可能是您正在寻找的解决方案(回答 HTTP 问题)。使用这种技术,连接保持打开状态,并且可以通过现有连接将新信息从服务器推送到客户端,而无需像使用 HTTP 长轮询那样关闭和重新打开连接。
  • HTTP/2 服务器推送:另一种从服务器推送到客户端的标准化机制。这些被称为“推送响应”,浏览器可能会缓存这些。
  • WebSockets:在网络浏览器(或任何网络客户端)内通过单个 TCP 连接进行完全双向和全双工通信。

相关信息和资源:

  1. 您可以将服务器发送事件(EventSource API)视为 HTTP 长轮询和 HTTP 流的标准化。
  2. HTTP/2 Server Push

关于http - 是否有真正的服务器通过 http 推送?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8110550/

相关文章:

http - 这是 REST API 的有效映射吗?

html - 构建 HtmlElement 对象树

ssl - 避免第一个请求和后续资源的并发 SSL/TLS 协商

javascript - 点击 popup.js 时出现 Chrome 扩展 : Activate and execute background. js

javascript - 推送复合数组元素

javascript - Array.push 在 forEach 循环中的 for 循环中不起作用。Javascript

http https 重复内容谷歌

http - 使用 HTTP 流水线的缺点是什么?

html - 制作 'Confirm' 页面的最佳方法?

iphone - 注册设备以在首次启动时推送通知