MQTT
作者資料
通訊協定 MQTT之淺入深出
協定?
甚麼叫協定
通訊協定
很多東西通訊共識
角色換一下就知道了
我們來看一下常見的軟體通訊協定
- HTTP
- WebSocket
- MQTT
- AMQP
- XMPP
還有很多很多哩
HTTP(HyperText Transfer Protocal)
我們先來看看 一個HTTP請求有甚麼東西
看起來有四樣
//Request Header
{
"User-Agent":"Mozilla/5.0"
}
//Request Method
POST
//Request URL
/account
//Request Body
{
username:"FKT",
message:"SECRET MESSAGE"
}
Header 標頭
格式是JSON用來放一些請求的額外資訊
{
"User-Agent":"Mozilla/5.0",
"Accept":"...",
"Age":"..."
}
Method 方法
GET: 讀取
POST: 新增
PUT: 修改
PATCH: 部分資料修改
DELETE: 刪除
URL 路由
請求的住址
GET : "google.com" #讀取google.com
Data 資料
可以是 CSV,XML,JSON,String
{
"username":"B10923057",
"password":"pa55w0rd"
}
MQTT(Message Queue Telemetry Transport)
簡便許多
//MQTT Header
0101010101
//主題名稱
test
//訊息內容
{
data:{
username:"FKT"
},
_page:{
_next:"https://123.com/10"
}
}
標頭 Header
基本的Header使用二進位表示,整個Header長度2Bytes 每個數字大小是4bits所以有8個數字 而剛提到的HTTP Header可高達8KBs
包含
- 訊息類型
- 是否副本
- 傳輸品質
- 是否保留
主題 Topic
算是MQTT系列通訊協定特有的東西 可以想像成Topic就像是你喜歡的Youtuber頻道 主題名稱限制65535個字元
Pub Broker Sub
發布者可以一次發給多個訂閱主題的人 訂閱也可以訂閱許多主題
內容 Data
可以傳送XML,JSON,String,Bin(utf-8編碼)
Topic: /message/FKT
{
"message":"我傳送了訊息"
}
MQTT Features
MQTT主動
MQTT透過Topic廣播
QoS 服務品質
Quality of Service 個確保網路品質的機制 確保項目
- 頻寬
- 封包遺失率
- 錯誤
- 延遲
QoS讓MQTT可以用在頻寬受限的地方
由於QoS機制,可以避免關鍵流量無法使用
代表沒有QoS重要資訊是可能遺失的
MQTT ChatRoom Workshop
專案連結 大家可以選擇Fork我的專案再clone自己的Repo
git clone git@github.com:fan9704/TypeScriptMQTT.git
npm install
npm run dev
PORT = 8080 //in .env
http://127.0.0.1:8080/pub2/lobby/HelloWOrld
http://127.0.0.1:8080/pub2/FKT/HelloWOrld