彗星是一種架構風格,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. 什麼是便攜式輕量級彗星服務器實現?
- 2. GWT的彗星實現
- 3. 彗星和超時
- 4. 彗星和PHP實時數據更新?
- 5. 彗星編程實現
- 6. 彗星如何實施?
- 7. 什麼是嵌入式系統定時器的良好實現?
- 8. 什麼是java彗星式框架最成熟和最健壯?
- 9. 彗星在glassfish v3上的實現
- 10. 彗星vs pubsub ..?
- 11. 沒有彗星
- 12. 彗星和jQuery
- 13. android的彗星庫
- 14. python上的彗星
- 15. 什麼是系統調用?
- 16. CRM系統還是什麼?
- 17. 在客戶端實現彗星
- 18. 彗星Web服務器實現
- 19. 什麼是統一型系統?
- 20. 將彗星與彗星服務器集成的設計模式
- 21. jQuery的彗星推,沒有彗星服務器
- 22. Erlang,membase和彗星
- 23. PHP彗星問題
- 24. .NET彗星引擎
- 25. nginx代理彗星
- 26. 彗星與ASP.NET AsyncHttpHandlers
- 27. dwr彗星方法
- 28. 實時拍賣更新 - 彗星?龍捲風? ActiveMQ的?
- 29. 沒有AJAX的彗星
- 30. 什麼是Java Hashmap的打字系統?