有两种实现 Comet 的技术。一种使用 HTTP 流,它使用单个持久 TCP 连接在客户端/服务器之间发送和接收多个 HTTP 请求/响应。第二种是 HTTP 长轮询,它使服务器保持连接打开,并且一旦发生事件,响应被提交并且连接被关闭。然后,客户端立即重新打开一个新的长轮询连接,等待新事件的到来。
我正在使用 Faye ruby gem,我注意到它使用了开箱即用的 Comet/Bayeux。但我不知道它使用了哪种彗星技术。我只是收集到 Bayeux 是发布-订阅协议。我很想知道它是否存在与 HTTP 流和长轮询相同的缺点。它是否允许全双工通信(双向通信,并且与半双工不同,它允许同时发生。)?