或从服务器到客户端的任何其他类型的实时数据馈送......我说的是从服务器到客户端的一堆实时数据。即,每秒更新一次信息。
是服务器神奇地将数据推送到客户端,还是客户端需要不断地轮询服务器以获取更新?这通常在什么协议下工作?(http、套接字通信等?)
或从服务器到客户端的任何其他类型的实时数据馈送......我说的是从服务器到客户端的一堆实时数据。即,每秒更新一次信息。
是服务器神奇地将数据推送到客户端,还是客户端需要不断地轮询服务器以获取更新?这通常在什么协议下工作?(http、套接字通信等?)
在一个简单的情况下:
while(data = recv(socket))
(伪代码)send(...)
在套接字上。您甚至可以通过 HTTP 实现此模式(HTTP 套接字没有真正的时间上限)。服务器甚至不需要从套接字读取 - 它可以尝试仅写入到 firehose。
通常使用 TCP 套接字 - 消息按顺序到达,并且是尽力而为。如果延迟更重要并且丢弃或乱序不是问题,则可以使用 UDP。
在经纪人/银行等使用的服务器端金融应用程序中,市场数据(报价、交易等)通过一些应用程序级协议通过 TCP 传输,该协议很可能不是HTTP。当然,没有投票。客户端正在与服务器建立 TCP 连接,服务器向客户端推送数据。分发市场数据的常用方法之一是FIX。Thomson-Reuters 拥有一系列可追溯到大型机时代的神秘专有协议来分发此类数据。
HTTP 可用于 SOAP/RESTful 传输/请求不那么大容量的数据,例如商业新闻。
更新实际上,在某些情况下,即使 FIX 也是不够的,因为它具有“文本”性质,因此开销很大。大多数经纪商和交易所使用二进制格式协议(FAST 或某些专有协议)传输大量数据流,例如报价。