【发布时间】:2012-02-24 16:13:20
【问题描述】:
有点困惑,netty 和 comet 是如何相关的,或者它们是分开的并且它们以某种方式协同工作?
我读过一些关于使用 netty 和 comet 构建实时应用程序的文章,对它们如何协同工作感到困惑。
【问题讨论】:
-
相当肯定彗星是一个想法,一种做“反向ajax”的方式。而netty就是这个“理念”的实现。
有点困惑,netty 和 comet 是如何相关的,或者它们是分开的并且它们以某种方式协同工作?
我读过一些关于使用 netty 和 comet 构建实时应用程序的文章,对它们如何协同工作感到困惑。
【问题讨论】:
据我了解,Netty 是一个框架/库,而 Comet 是一个概念(一种单向 websocket,正如 Chad 所说,一种“反向 ajax”)。
【讨论】:
Cometd 是 Bayeux 协议的一种实现 (http://svn.cometd.com/trunk/bayeux/bayeux.html) 该协议有多种实现方式,其中 Cometd 可能是最流行的。
Bayeux 实现的要点在于它允许服务器通过 HTTP 进行异步消息传递,其中包括难以捉摸的“服务器推送”。与客户端每隔 5 秒轮询一次服务器以获取更新不同,服务器可以在有更新时“调用”客户端。
它使用长轮询技术。本质上,HTTP 连接在客户端和服务器之间保持打开状态。当服务器最终有东西要“告诉”客户端时,它会响应打开的连接。立即重新建立连接或“长轮询”。为了防止 HTTP 超时,可以在不同的时间段内自动重新建立连接。
我不确定 Netty 和 Cometd 之间的关系是什么,或者是否存在关系。我怀疑 Netty 在实现 Bayeux 协议时会非常有用(文档似乎暗示了这一点),因为 Bayeux 协议和扩展的弱点之一是必须处理的开放 HTTP 连接的绝对数量。如果他们阻塞,你就会遇到问题,因为线程太多。
【讨论】: