【发布时间】:2013-03-21 09:07:40
【问题描述】:
我有一个关于彗星实施的问题。我知道它用于处理类似于现在可以通过 Servlet 3.0 异步功能实现的异步请求。然而我不明白的是如何推送到调用客户端。
在网络套接字中,我们通过提供 ip 和端口来打开连接。使用 Comet,如何与服务器连接,以便在服务器推送数据时接收回调?
【问题讨论】:
我有一个关于彗星实施的问题。我知道它用于处理类似于现在可以通过 Servlet 3.0 异步功能实现的异步请求。然而我不明白的是如何推送到调用客户端。
在网络套接字中,我们通过提供 ip 和端口来打开连接。使用 Comet,如何与服务器连接,以便在服务器推送数据时接收回调?
【问题讨论】:
Comet (programming) 上的 Wikipedia 页面是解决这个问题的一个很好的资源(抱歉,它太明显了)。
Comet 是使用 HTTP 来模拟客户端和服务器之间的双向连接的总称。最终,您向服务器发出 HTTP 请求并尝试使其保持打开状态(长轮询和流式传输)。使用长轮询,连接在给定时间间隔后或返回数据时关闭。通过流式传输,连接有助于尽可能长时间地打开,并通过现有连接发送新数据。
实现这些的方式因网络浏览器而异 - 这就是 Comet 被归类为 hack 的原因。同样,维基百科页面应该提供您需要的几乎所有信息。
我写了一篇文章,介绍了实时网络通信的历史(重点关注客户端)以及为什么WebSockets are a game-changer。
【讨论】: