2015-09-01 40 views
1

我讀過HTTP不適合作爲一個消息協議在幾個地方,如參考RabbitMQ here爲什麼HTTP + Web套接字不適合作爲消息協議?

我認爲這有一個技術原因,它不是一個單純的意見。例如,我查看了AMQP spec,看不到任何HTTP + Web套接字無法工作的原因。實際上,對於基於Web套接字的AMQP,works中似乎存在一些問題。此外,我查看了使用HTTP + Web套接字的STOMP協議,並且看不到任何重大限制(除了小的性能命中之外)。

HTTP + Web Sockets缺乏什麼技術特性使其不適合作爲消息傳遞協議?

更新: 這就是我正在尋找的:Crossbar.IO - 一個WAMP消息經紀人。我需要一個消息代理,我可以輕鬆地從瀏覽器連接到並且不滿意RabbitMQ(通過STOMP)或HiveMQ(MQTT)。

回答

3

HTTP是以請求/響應爲基礎的,是以發佈者/訂閱者的方式工作的難點。基本上,您可以輪詢新消息來源,也可以創建另一個本地端點,讓另一端將消息推送給您。

WebSocket是不同的。儘管作爲HTTP請求啓動,它可以直接切換到持久的全雙工連接,其中兩端都可以推送數據。基本上,在這種情況下,HTTP僅用作協議來協商連接,一旦協商WebSocket使用自己的協議傳輸數據。

更新:我們很清楚HTTP不是一個消息協議,因爲它是請求/響應。雖然WebSockets允許從兩端推送數據,但它不是一個消息傳遞協議。它定義了一種數據框架的方式,但沒有定義語義或語法來訂閱主題或任何關於消息傳遞的操作。例如WAMP是websockets的實際消息協議。

+0

對不起 - 我澄清了我的問題。有什麼關於使用技術上缺乏消息傳遞的HTTP + Web套接字嗎? – Charlie

+0

沒有什麼能阻止HTTP被使用錯誤的消息協議。問題是,它是壞的,但。但是任何可以接收和發送的信息都可以用於消息傳遞。 –

+0

我更新了我的答案。 – vtortola

相關問題