6

或从服务器到客户端的任何其他类型的实时数据馈送......我说的是从服务器到客户端的一堆实时数据。即,每秒更新一次信息。

是服务器神奇地将数据推送到客户端,还是客户端需要不断地轮询服务器以获取更新?这通常在什么协议下工作?(http、套接字通信等?)

4

2 回答 2

1

在一个简单的情况下:

  1. 创建一个带有监听套接字的服务器。
  2. 在客户端上,连接到服务器的套接字。
  3. 让客户做一个while(data = recv(socket))(伪代码)
  4. 当服务器有一些令人兴奋的事情要告诉客户端时,它只是send(...)在套接字上。

您甚至可以通过 HTTP 实现此模式(HTTP 套接字没有真正的时间上限)。服务器甚至不需要从套接字读取 - 它可以尝试仅写入到 firehose。

通常使用 TCP 套接字 - 消息按顺序到达,并且是尽力而为。如果延迟更重要并且丢弃或乱序不是问题,则可以使用 UDP。

于 2010-12-18T06:14:35.663 回答
1

在经纪人/银行等使用的服务器端金融应用程序中,市场数据(报价、交易等)通过一些应用程序级协议通过 TCP 传输,该协议很可能不是HTTP。当然,没有投票。客户端正在与服务器建立 TCP 连接,服务器向客户端推送数据。分发市场数据的常用方法之一是FIX。Thomson-Reuters 拥有一系列可追溯到大型机时代的神秘专有协议来分发此类数据。

HTTP 可用于 SOAP/RESTful 传输/请求不那么大容量的数据,例如商业新闻。

更新实际上,在某些情况下,即使 FIX 也是不够的,因为它具有“文本”性质,因此开销很大。大多数经纪商和交易所使用二进制格式协议(FAST 或某些专有协议)传输大量数据流,例如报价。

于 2010-12-20T15:47:29.870 回答