互联网流数据源如何工作?

时间:2010-12-10 06:09:16

标签: language-agnostic client feeds

这可以是任何类型的数据馈送,我们只能说这个例子是股票市场数据,因为这是一个受欢迎的数据。但我在谈论实时数据源。所以它不断发送数据。

我正在努力了解这是如何实现的。这会以某种方式通过http发生吗?我只是不知道客户端如何连接到服务器并且服务器发送连续数据,任何人都可以在技术上告诉我这是如何工作的?客户端如何连接到服务器?我们来看看C#或Java等等。这是通过http还是其他类型的方式发生的?请详细说明。

由于

1 个答案:

答案 0 :(得分:2)

它与普通的HTTP流量没有任何不同,只是更长。

当您打开网站时会发生什么? (非常粗略概述)

  1. 您的计算机与服务器联系,建立连接。
  2. 服务器开始向您分发数据包。
  3. 您的计算机收到数据包,可能是无序的,有些是有明显延迟的,并将它们重新组装到一个网站中。
    • 您的计算机会收到收到的数据包的确认。
    • 服务器将在很长一段时间内重新传输尚未收到确认信息的任何数据包,假设它们已被丢弃。
    • 在接收数据包和/或确认之间,都等待。
  4. 当传输显示网站所需的所有数据时,您的计算机会感谢服务器的时间并断开连接。
  5. 如果在此过程中的任何一方任何一方停止响应很长一段时间,任何一方都可能会因为技术问题而放弃连接。

    “流式数据Feed”会发生什么? (甚至更粗略的概述)

    1. 客户联系服务器,建立连接。
    2. 服务器开始将分割成数据包的数据发送给客户端。
    3. 客户端收到数据包,可能是无序的,有些是有明显的延迟,并重新组装它们。
      • 客户端发送对收到的数据包的确认。
      • 服务器将在很长一段时间内重新传输尚未收到确认信息的任何数据包,假设它们已被丢弃。
      • 在接收数据包和/或确认之间,都等待。
    4. 唯一的区别是客户端没有挂断服务器,因为它仍然期待数据并且两者都不能快速断开连接。

      问题在于 Web服务器(对于web sites )专门用于向许多人提供小数据片段的任务,因此它们可以快速挂起一旦发送了所有数据,就可以了。您的服务器脚本可以只是不退出,并且连接将保持活动状态。这是一个很小的PHP脚本,可以证明:

      while (true) {
          echo '.';
          sleep(1);
      }
      

      这将无限期地每秒发送一个新.(请注意,需要正确配置Web服务器以不终止脚本并立即发送输出。)

      请参阅Wikipedia article about TCP/IP了解基础知识,并this article about long-polling/HTTP streaming了解具体示例。