最近玩 ESP8266 好常看到這個詞,到底是幹麼的勒~有必要知道嗎?
在 Internet 上最通用的協定就是網頁的 HTTP Protocol 了,所以你只要想到需要有 client server 的架構,你就會想到 HTTP,搭配 RESTful 的 API 設計(GET、POST、DELETE、PUT),就能實現無所不能的查詢、新增、刪除、修改。
這樣就夠解決所有的網路問題嗎?當然不能,但是幾乎。
最常見的難題就是聊天室,需要即時通訊的場合,HTTP 是一個簡單但是笨重的協定,一問一答與全純文字的傳輸,讓他的每一個 reqeust 都需要承擔無法丟棄的包袱(在 HTTP/2 試圖解決的問題之一)。所以為了解決 server push 的問題,在傳統架構下可以用 polling 或 long polling 來盡量克服,在 Web 上則有 Websocket 等協定出現解決此問題。
而 MQTT(message queuing telemetry transport) 則是在物聯網界的 WebSocket + Messsage queuing 解決方案。
讓你能盡可能即時又省資源的情況下,確保訊息被 Push 至移動裝置。他的設計是發佈/訂閱模式(Publish subscribe pattern),讓你能對特定裝置(broker)訂閱主題,並能盡可能的以節省資源的方式確保有發送到訂閱的 client 上。
範例:
- HiveMQ:HiveMQ is a MQTT broker, websocket client demo
- REST is for sleeping. MQTT is for mobile