reversehttp.net几乎无法立即了解reversehttp的真正含义以及如何最好地利用它,这使得这个工具似乎难以实际实现。在什么样的环境中,这可能是理想的实时Web数据情况,什么时候不起作用,哪些浏览器支持这种方法,它究竟是什么?
感谢所有可以提供帮助的人,并且首先听到了这一点,并且知道它是什么。
答案 0 :(得分:6)
反向HTTP是客户端保持与Web服务器的开放连接的一种方式,以便Web服务器可以将更新推送到客户端(而不是客户端不断要求更新)。
以您的经典Twitter客户端为例。
目前,如果您有任何更新,客户会定期询问Twitter。如果没有,这是一个浪费的请求。
使用反向HTTP等技术,一旦建立与Twitter的连接...... Twitter就能够在发生更新时向您发送更新,从而为您和Twitter节省一些带宽,开销和一点点努力。
反向HTTP的工作原理是在服务器与之通信的浏览器中运行Web服务器。
有类似的技术以更安全,更安全的方式实现同一目标。 Microsoft.NET通过在客户端和服务器之间保持连接打开(而不是在客户端上运行单独的服务器),在WCF中将这些类型的服务实现为双工绑定服务。还有一项名为Comet的技术允许同样的事情。
答案 1 :(得分:1)
浏览页面:我的阅读是,而不是网页浏览器轮询更新和拉任何新数据,而是推送新数据在客户端可用时。
对于需要快速响应任何新数据的应用程序,这将消除因重复轮询而导致的大量流量。
答案 2 :(得分:1)
我查看了您链接到的反向HTTP的来源。实施包括两部分:
HTTP中继。这个是在reversehttp.net
网站上托管的。它只是等待对某个URL(生成的URL)的请求,并将其转发到一个通道(参见2)。然后它在另一个通道上等待(见2),并将其转发给请求者。
HTTP JavaScript服务器。 “客户端服务器”使用Ajax轮询“服务器服务器”以查找任何传入请求。然后,当您在“服务器服务器”上请求了URL并将其转发到某个频道时,它将被发送到“客户端服务器”。然后,客户端服务器将在步骤1解析来自请求的原始HTTP请求,创建答案(HTTP回复)。此答案将被发送回“服务器服务器”,该服务器服务器最终会在通道中将实际回复发送回请求者。
它根本不在客户端托管真正的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客户端再返回。
如果这样描述,它似乎效率很低,但是当你考虑到在大多数情况下,客户端和服务器都将在同一台计算机上运行(因此只有两台计算机相互通信)然后效率低下消失。