ReverseHTTP到底是什么?为什么它会有用?

时间:2010-07-01 03:04:36

标签: javascript ajax real-time

reversehttp.net几乎无法立即了解reversehttp的真正含义以及如何最好地利用它,这使得这个工具似乎难以实际实现。在什么样的环境中,这可能是理想的实时Web数据情况,什么时候不起作用,哪些浏览器支持这种方法,它究竟是什么?

  • 是什么让reversehttp与其他PUSH实现不同?

感谢所有可以提供帮助的人,并且首先听到了这一点,并且知道它是什么。

4 个答案:

答案 0 :(得分:6)

反向HTTP是客户端保持与Web服务器的开放连接的一种方式,以便Web服务器可以将更新推送到客户端(而不是客户端不断要求更新)。

以您的经典Twitter客户端为例。

目前,如果您有任何更新,客户会定期询问Twitter。如果没有,这是一个浪费的请求。

使用反向HTTP等技术,一旦建立与Twitter的连接...... Twitter就能够在发生更新时向您发送更新,从而为您和Twitter节省一些带宽,开销和一点点努力。

反向HTTP的工作原理是在服务器与之通信的浏览器中运行Web服务器。

有类似的技术以更安全,更安全的方式实现同​​一目标。 Microsoft.NET通过在客户端和服务器之间保持连接打开(而不是在客户端上运行单独的服务器),在WCF中将这些类型的服务实现为双工绑定服务。还有一项名为Comet的技术允许同样的事情。

答案 1 :(得分:1)

浏览页面:我的阅读是,而不是网页浏览器轮询更新和任何新数据,而是推送新数据在客户端可用时。

对于需要快速响应任何新数据的应用程序,这将消除因重复轮询而导致的大量流量。

答案 2 :(得分:1)

我查看了您链接到的反向HTTP的来源。实施包括两部分:

  1. HTTP中继。这个是在reversehttp.net网站上托管的。它只是等待对某个URL(生成的URL)的请求,并将其转发到一个通道(参见2)。然后它在另一个通道上等待(见2),并将其转发给请求者。

  2. HTTP JavaScript服务器。 “客户端服务器”使用Ajax轮询“服务器服务器”以查找任何传入请求。然后,当您在“服务器服务器”上请求了URL并将其转发到某个频道时,它将被发送到“客户端服务器”。然后,客户端服务器将在步骤1解析来自请求的原始HTTP请求,创建答案(HTTP回复)。此答案将被发送回“服务器服务器”,该服务器服务器最终会在通道中将实际回复发送回请求者。

  3. 它根本不在客户端托管真正的HTTP服务器。这需要一个开放的端口80,大多数人都没有。如果你在NAT或防火墙后面,如果配置得好,它将被阻止。

    我想使用长轮询或Comet比使用它更好。解析客户端上HTTP标头的开销非常麻烦。

    该规范描述了一种中继HTTP请求的方法。这将通过将对“服务器服务器”的任何请求的Content-Type标头设置为message/http来完成。我认为无论如何都有更好的代理或中继HTTP请求的解决方案,只需更改待转发的Host字段,添加一个特殊字段,其中包含对原始发件人的引用及其遍历的路径,并将修改后的HTTP请求发送到下一个服务器。然后接收器将简单地发回请求,接收器查找特殊字段,弹出它的来源,并在链中进一步传递回复。

答案 3 :(得分:0)

通过查看一些演示(例如this one),看起来它是在标准的彗星风格界面上构建的。该实现仅将其自身呈现为客户端的完整HTTP服务器。

因此,在您的javascript中,它“看起来像”您正在托管响应“http://reversehttp.net/demo12345/”请求的Web服务器,但实际上,请求是通过彗星请求从“真实”Web服务器进行隧道传输的到浏览器中运行的javascript客户端再返回。

如果这样描述,它似乎效率很低,但是当你考虑到在大多数情况下,客户端和服务器都将在同一台计算机上运行(因此只有两台计算机相互通信)然后效率低下消失。