mqtt是
一種輕量級的協議(mq telemetry transport),適合於低頻寬、不可靠連線、嵌入式裝置、cpu、記憶體資源緊張,適用於各種受限的環境。
2、協議特徵
(1)訊息模型
mqtt是一種基於**的發布/訂閱的訊息協議。提供一對多的訊息分發,解除應用程式耦合。乙個發布者可以對應多個訂閱者,當發布者發生變化的時候,他可以將訊息一一通知給所有的訂閱者。這種模式提供了更大的網路擴充套件性和更動態的網路拓撲。
(2)訊息質量
mqtt提供三種質量的服務:
1)至多一次,可能會出現丟包的現象。使用在對實時性要求不高的情況。這一級別可應用於如下情景,如環境感測器資料,丟失一次讀記錄無所謂,因為很快下一次讀記錄就會產生。
2)至少一次,保證包會到達目的地,但是可能出現重包。
3)正好一次,保證包會到達目的地,且不會出現重包的現象。這一級別可用於如計費系統等場景,在計費系統中,訊息丟失或重複可能會導致生成錯誤的費用。
(3)主題名稱
主題名稱(topic name)用來標識已發布訊息的資訊的渠道。訂閱者用它來確定接收到所關心的資訊。它是乙個分層的結構,用斜線「/」作為分隔符。有兩種萬用字元可以在主題發布、訂閱時使用:「#」和「+」。前者可以通配多層結構,而後者只能通配一層結構。例如乙個topic : 「a/b/c」,則「a/+/c」和「a/#」都可以和它相等。發布不支援模糊匹配,必須是確定的主題。
4)遺屬
當乙個客戶端斷開連線的時候,它希望客戶端可以傳送它指定的訊息。該訊息和普通資訊的結構相同。通過設定該位並填入和資訊相關的內容即可。
(5)訊息型別
reserved0保留
connect1客戶
在做專案時遇到阿里雲的mqtt資訊接受和推送服務,整了好久沒正好,最後一位大神給了乙個他新寫的demo,一用就ok,和大家分享下。
大神的mqtt庫的github位址你把它用cocoapods編譯一下就行了。
下面是**的註冊資訊,特別提示我這裡的self
.kclientid,self.ktopic是活的可變的,大家可以根據自己的情況決定。
mqttcfsockettransport
*transport = [[
mqttcfsockettransport
alloc
] init
];transport.
host
=kserverhost
;transport.
port
=1883
;mqttsession
*session = [[
mqttsession
alloc
] init
];session.
transport
= transport;
session.
clientid
=self
.kclientid
;session.
username
=kname
;session.
password
=kpassword
;session.
delegate
=self
;[session
connectandwaittimeout:20
]; //this is part of the synchronous api
[session
subscribetotopic
:self
.ktopic
atlevel:2
subscribehandler
:^(nserror
*error,
nsarray
<
nsnumber
*> *gqoss)
else
}];
阿里雲訊息推送服務
移動推送 提供從雲端到移動終端的優質推送服務,支援android和ios平台的通知 訊息的推送功能 推送內容及模式 推送方式 按裝置號推送,在客戶端呼叫getdeviceld獲得裝置號,再通過控制台 openapi介面推送 名詞解釋 accesskeyld和accesskeysecret 阿里雲使用...
android訊息推送 mqtt協議
對與訊息推送是什麼個概念,在此就不贅述啦。google自帶的c2md服務,可以幫助我們實現該功能,可以該伺服器在國外,所以鑑於網速等各種條件限制,我們也沒法實現。為解決該問題,在讀了大量的部落格等質料之後,終於見到啦陽光。第三個是由ibm提供的mqtt協議的實現,就相當於乙個 開啟1883埠,在se...
mosquitto 基於MQTT訊息推送
mosquitto note 基於mqtt訊息推送 要解決的問題是 給android手機做訊息推送 自已搭建訊息推送後台 端 中轉訊息,守護程序 mosquitto 傳送訊息客戶端 mosquitto pub 接收訊息客戶端 mosquitto sub 管理密碼檔案 mosquitto passwd...