MQTT和Websocket的區別是什麼?

時間 2021-05-12 19:00:47

1樓:lIIllIlII

WebSocket實現的是Web Client端和伺服器端的長連線(即:管道。避免了RESTful那樣的短連線),節省的是多次握手的開銷。

MQTT實現的是「發布/訂閱」模型(名字裡就有Message Queue),不保持Client和Broker之間的連線。

MQTT的接收廣播的訊息是通過MQTT client,而不是Web Client。由於在物聯網應用場景中很多應用是沒有Web Client的(比如你家微波爐上面不會安個瀏覽器。。),所以MQTT特別適合IoT應用場景。

並且MQTT保證每個訊息極其小(乙個MQTT control message可以只有2byte),因此節約頻寬也節約了接收端的電能。使得MQTT更適合用在物聯網中。

MQTT Client和Broker之間的連線仍然是基於TCP/IP協議,但是理論上任何支援有序雙向連線的網路協議都可以支援MQTT,比如MQTT-SN:MQTT for sensor network可以基於藍芽或UDP。

題主提到的MQTT over WebSocket是把MQTT control message 包裝成WebSocket包,通過WebSocket 管道傳送。即使用WebSocket來支援MQTT Client和Broker的連線。

2樓:張琪

兩者之所有有交集,是因為乙個應用場景:如何通過HTML5應用來作為MQTT的客戶端,以便接受裝置訊息或者向裝置傳送資訊,那麼MQTT over WebSocket自然成了最合理的途徑了。

3樓:

MQTT 跟 Websocket 可以認為是不同層面的協議。MQTT 做原生裝置的通訊,MQTT over WebSocket 主要用於 MQTT 裝置跟 Web 端通訊。

WebSocket 相比普通的 TCP 長連線有什麼優勢?

WebSocket 是應用層協議,tcp 是傳輸層協議。websocket 本身是基於 tcp 實現的。tcp 本身無所謂長短連線,理想狀態下只要不 close,tcp 連線就一直存在 注意是理想 所謂的長連線本身是一條虛擬鏈路。所以這個問題沒法回答。 A yon 首先需要指出這個 WebSocke...

你用Go語言開發的WebSocket服務端是如何進行熱更新的?

通用的幾個方案。從多到少依次是 技術不夠架構來湊。gateway方案。網遊比較依賴tcp長連,所以他們比較重視這個方案,有一大堆的框架 文章可以參考。網路不穩重試來湊。Websocket我一般用於推送領域,網頁im之模擬較多。客戶端 瀏覽器 做好斷線重連機制即可。網遊除外。網遊基本都是gateway...

瀏覽器websocket是否能連線C 的socket(IOCP)?

餘彬彬 A C Websocket server for realtime interaction with Web clients這個是windows端的例子,有用到IOCP,大致流程是初始化socket TCP 監聽某個埠號,js這邊初始化websocket連線時會響應到C 這一端,然後根據協議...