彗星是一种架构风格,Websockets/HTTP Streaming/SSE/BOSH/Bayeux是这种架构风格的不同实现吗?什么是实时系统的彗星?
回答
术语"Comet"是作为对“Ajax”这个词的笑话而诞生的。
AJAX(asynchronous JavaScript and XML)是一种执行HTTP请求并处理来自浏览器JavaScript引擎的HTTP响应的技术。 当时,“Ajax”也是一种清洁产品。
当开发人员使用AJAX开始探索服务器端事件浏览器的低延迟传输技术时,术语“Comet”was coined因为当时的“Comet”是另一种清洁产品,它比“ Ajax“清洁产品和”Comet“技术比”Ajax“技术更好。
“Comet”是一系列用于Web的HTTP技术,用于通过客户端(通常是浏览器)以非常短的等待时间(远小于一秒)通知服务器端事件。
“长轮询”是一种这样的技术,可能是最流行和可靠的。 其他此类技术包括“隐藏的iframe”,“脚本注入”(又名JSONP)和“无限响应”(又名“streaming”)技术(例如使用HTTP/1.1的Transfer-Encoding: chunked
机制)。
现在,服务器发送的事件(SSE,又名EventSource)是一种已经标准化的流媒体技术,尽管最近还没有看到太多的发展。 SSE使用浏览器实现的Content-Type: text/event-stream
而不是使用Transfer-Encoding: chunked
机制,而使用HTTP传输机制之上的简单协议。这意味着来自服务器的内容具有一种格式 - 由此简单协议定义 - 需要由浏览器进行解析以将其转换为传递给JavaScript引擎的事件,并且应用程序具有API以便能够监听到这些JavaScript事件。
BOSH(由XEP-0124定义)是长轮询技术的变体,特别是在XMPP中使用的,因此它也是一个“彗星”技术。
Bayeux是传输无关的协议,该协议定义通道和消息上的传输协议,例如HTTP或网页套接字的顶部语义。 CometD项目在HTTP和WebSocket上使用Bayeux为应用程序提供点对点,发布 - 订阅和远程调用functionalities。其他项目在HTTP或WebSocket(或两者)之上使用Bayeux协议。
最后,WebSocket是一种内置双向功能的传输协议,它不具备HTTP的功能。然而,它没有定义它传输的有效负载的语义,也没有描述它的元数据,所以它通常用作其他协议(如Bayeux)的传输协议。 WebSocket不是“Comet”技术,因为它不基于HTTP。
这实际上取决于你对“建筑”这个词的含义。
我会说“Comet”是一组使用HTTP实现低延迟事件的技术。
长轮询,HTTP分块流式传输,SSE,BOSH是这些“彗星”技术中的一部分。
Bayeux是基于JSON的传输协议协议,用于消息传递。
WebSocket是一种双向传输协议,与其他协议(通常是传输协议,如Bayeux)协同使用。它在浏览器中的支持使它成为“Comet”技术的替代品。
- 1. WCF彗星实现
- 2. 什么是便携式轻量级彗星服务器实现?
- 3. GWT的彗星实现
- 4. 彗星和超时
- 5. 彗星和PHP实时数据更新?
- 6. 彗星如何实施?
- 7. 实施彗星编程
- 8. 使用JSP实现彗星
- 9. 彗星编程实现
- 10. 如何实现彗星?
- 11. 实时操作系统tick时间是什么意思,这个系统的tick时间有什么用途
- 12. 彗星与彗星工作示例
- 13. 什么是星系火花?
- 14. 什么是websockets(彗星除外)的替代用法?
- 15. 什么是嵌入式系统定时器的良好实现?
- 16. 彗星连接超时
- 17. 写5星级评分系统的最佳方法是什么?
- 18. 什么是java彗星式框架最成熟和最健壮?
- 19. 彗星在glassfish v3上的实现
- 20. 彗星和jQuery
- 21. 没有彗星
- 22. 彗星vs pubsub ..?
- 23. android的彗星库
- 24. python上的彗星
- 25. 什么定义了实时/近实时系统?
- 26. CRM系统还是什么?
- 27. 什么是系统Python
- 28. 什么是系统负载?
- 29. 什么是系统调用?
- 30. 彗星Web服务器实现