繁体   English   中英

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

[英]How do server-client push/pull connections work?

我对财务数据如何从服务器流式传输到客户端非常感兴趣。 我经常在这里使用“推拉”一词。 我想知道是否有人可以给我一个例子(最好在 Java、C# 或 Javascript 中)这实际上是如何实现的? 每当我在家里编写业余爱好项目时,我经常会查询 URL(包含价格)并在 while(true) 循环内不断调用它,使用 thread.sleep(x),即使价格没有变化。

提前致谢

不知道您所说的“流式财务数据”是什么意思,但推/拉的概念不仅限于金融部门:)

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

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

希望这个对你有帮助。

如果客户端在 HTTP 上工作,推送总是由客户端发起,即客户端请求新的更新并且服务器发送它们。 如果客户端是瘦客户端(即在浏览器中运行的应用程序),现代方法是使用 AJAX 来检索数据而不刷新页面。 但同样主动权在客户端,但用户只是看不到它。 它使用 javascript 按计划完成。

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

你在拉。 取是客户端从服务器请求数据并且服务器根据该请求进行操作。

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

所以区别在于:push是由服务端发起的,而pull是由客户端发起的。

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

这是两种基于 Web 的 PUSH 技术。

至于浏览器支持:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM