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

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

提前致谢

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

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

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

希望这个对你有帮助。

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

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

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

如果服务器在收到新数据时会向您发送数据,那么就应该推送 。

所以区别在于:push由服务器启动,pull由客户端启动。

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

  • 的WebSockets
  • EventSource的

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

至于浏览器支持:

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

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