【问题标题】:Can HTTP be used to track connections?可以使用 HTTP 来跟踪连接吗?
【发布时间】:2011-07-25 13:31:43
【问题描述】:

我知道关于 HTTP 是严格面向连接还是无连接存在一些争论。 AFAIK,HTTP 只维持一个足够长的连接来传输一系列即时请求。最近,我和一位微软认证架构师正在讨论一种向“已连接”客户端广播更新的方法。

想象一下跳棋游戏。如果 player1 移动,则需要通知 player2。使用 HTTP(无 TCP/UDP),我知道的唯一方法是轮询。建筑师不同意我的看法。

那么,如何仅使用 HTTP 向“已连接”的客户端发送更新?

【问题讨论】:

    标签: c# .net http sockets


    【解决方案1】:

    目前有两种解决方案:

    • WebSockets 提供真正的回调,但未被广泛采用
    • 使用Comet 实现(例如WebSync)。这使用轮询。

    【讨论】:

    • Comet 技术不使用轮询(长轮询除外,但不一样),但允许服务器主动发送消息。 en.wikipedia.org/wiki/Comet_%28programming%29
    • 就我而言,至少与 WebSockets 相比,轮询仍在轮询;)
    • 如果你懂技术,但不是我们通常理解的polling
    • Websockets 基于 TCP。我不确定如果他在考虑 websockets,为什么他会不同意我所说的。它也没有被广泛支持,IE 没有被列为支持的浏览器。彗星可能就是他的想法。
    • COMET 技术确实会执行“轮询”,无论您如何称呼它。
    【解决方案2】:

    在 HTTP 级别,您可以通过不指定 Content-Length 或关闭连接来流式传输客户端可以接收的数据。 一些客户端/服务器有“无数据”超时,因此发送定期保持活动是一个好主意。 不过,回复需要在另一个 HTTP 请求中。

    流的扩展是客户端建立连接,而服务器在准备好之前不会发送任何数据。客户端然后处理回复并立即再次连接下一个块。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 2018-11-19
      • 2010-11-03
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多