什么是实时系统彗星?

时间:2016-06-28 09:03:20

标签: comet cometd

Comet是架构风格,Websockets / HTTP Streaming / SSE / BOSH / Bayeux是这种架构风格的不同实现吗?

1 个答案:

答案 0 :(得分:2)

"Comet"这个词在”阿贾克斯“一词的笑话中诞生了。

AJAX(作为异步JavaScript和XML)是一种执行HTTP请求并处理来自浏览器JavaScript引擎的HTTP响应的技术。 当时," Ajax"也是一种清洁产品。

当开发人员使用AJAX开始探索向服务器端事件的浏览器执行低延迟交付的技术时,术语" Comet" was coined因为当时" Comet"是另一种清洁产品,据说比#Aj;" Ajax"清洁产品," Comet"技术优于" Ajax"技术。

"彗星"是一系列用于Web的HTTP技术,用于通知服务器端事件的客户端(通常是浏览器)具有非常小的延迟(远小于一秒)。

"长轮询"是一种这样的技术,可能是最流行和最可靠的。 其他此类技术包括"隐藏的iframe",#34;脚本注入" (又名JSONP)和"无限响应" (又名"流媒体")技术(例如使用HTTP / 1.1' Transfer-Encoding: chunked机制)。

现在,服务器发送事件(SSE,又名EventSource)是一种已经标准化的流媒体技术,尽管最近还没有看到太多的发展。 SSE不是使用Transfer-Encoding: chunked机制,而是使用浏览器实现的Content-Type: text/event-stream,而使用HTTP传输机制之上的简单协议。这意味着从服务器下载的内容具有一种格式 - 由这个简单的协议定义 - 需要由浏览器解析才能转换为传递给JavaScript引擎的事件,并且应用程序具有能够监听的API这些JavaScript事件。

BOSH(由XEP-0124定义)是长轮询技术的一种变体,特别是在XMPP中使用,因此它也是一个" Comet"技术

Bayeux是一种与传输无关的协议,它在传输协议(如HTTP或WebSocket)之上定义 channel message 语义。 CometD项目在HTTP和WebSocket之上使用Bayeux为应用程序提供点对点,发布 - 订阅和远程调用functionalities。其他项目在HTTP或WebSocket(或两者)之上使用Bayeux协议。

最后,WebSocket是一种具有内置双向功能的传输协议,这是HTTP没有的功能。 但是,它没有定义它传输的有效载荷的语义,也没有描述它的元数据,所以它通常用作其他协议(如Bayeux)的传输协议。 WebSocket不是" Comet"技术,因为它不是基于HTTP。

这实际上取决于你对“#34; Architecture"”这个词的含义。

我会说" Comet"是一组使用HTTP实现低延迟事件的技术。

长轮询,HTTP分块流,SSE,BOSH是其中的一些" Comet"技术。

Bayeux是一种基于传输无关的协议,基于用于消息传递的JSON。

WebSocket是一种双向传输协议,与其他通常与传输无关的协议(如Bayeux)一起使用。它在浏览器中的支持使其成为" Comet"技术。