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

How do server-client push/pull connections work?

本文关键字:何工作 工作 客户端 连接 服务器      更新时间:2023-09-26

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

Thanks in advance

我不知道你说的'流式财务数据'是什么意思,但推/拉的概念并不局限于金融部门:)

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

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

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

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

你在拉。pull是指客户端向服务器请求数据,服务器对该请求进行操作。

如果服务器在接收到新数据时发送给你数据,那将是push。

所以区别在于:推送是由服务器发起的,而拉是由客户端发起的。

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

  • Websockets
  • EventSource

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

对于浏览器支持:

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

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