服务器 - 客户端推/拉连接如何工作?

时间:2011-07-20 08:47:26

标签: c# java javascript html json

我对如何从服务器流向客户端的财务数据非常感兴趣。我经常使用“推拉”这个术语。我想知道是否有人可以给我一个例子(最好用Java,C#或Javascript)这是如何实现的?每当我在家里编写业余爱好项目时,我经常最终查询一个URL(包含价格)并在一段时间(真实)循环中使用thread.sleep(x)连续调用它,即使价格没有变化。 / p>

提前致谢

4 个答案:

答案 0 :(得分:3)

不知道你对'流媒体财务数据'的意思,但推/拉的概念不仅限于金融行业:)

一般来说,拉策略意味着客户端通过预定义的通信通道(在您的情况下是现有和已知URL的套接字)主动获取数据,并轮询此通道以获取新信息。

与此相反,您有推送策略,您可以通知任何更改,并提供通信渠道并将其注册到连接的合作伙伴。例如。您有一个Web服务,您的连接合作伙伴会在他认为合适时将信息发布到该Web服务。有关此概念,请参阅http://en.wikipedia.org/wiki/Observer_pattern

希望这有点帮助。

答案 1 :(得分:2)

如果客户端正在通过HTTP工作,则推送始终由客户端启动,即客户端请求新的更新,服务器发送它们。如果客户端是瘦客户端(即在浏览器中运行的应用程序),那么现代的方法是使用AJAX来检索数据而不刷新页面。但这一举措再次出现在客户端,但用户却看不到它。它是使用javascript定期完成的。

最“实时”的方法是使用HTTP隧道技术:客户端对映射到不关闭连接的servlet的特殊URL执行HTTP GET。它只是保持开放。当它有东西要发送给客户端时,它会写入流。因此,您可以获得服务器到客户端的推送,但客户端仍然执行初始连接。

答案 2 :(得分:0)

你在做拉。 Pulling是客户端从服务器请求数据并且服务器对该请求执行操作的时间。

如果服务器在收到新数据后会向您发送数据,那就是push

所以不同之处在于:push由服务器启动,pull由客户端启动。

财务数据通常使用TIBCO Rendezvous等软件传输。发布者将消息发送给守护程序,并且订阅该主题的侦听器从守护程序获取消息。

答案 3 :(得分:0)

这是两种基于网络的PUSH技术。

至于浏览器支持:

  • Chrome / Safari / Firefox6支持这两者。
  • Opera支持EventSource和Websockets,但默认情况下禁用后者。
  • Firefox 4支持websockets但默认情况下已禁用。
  • IE< 10不支持,IE10可能会支持一个,如果你的幸运

有很多拉技术,包括HTTP和ajax。