Android中的即時通訊,就是客戶端要與服務器建立長時間的連接,正常情況下Android中請求服務器數據后,連接一般斷開。但即時通訊類的對消息的實時性要求比較高。需要客戶端與服務器建立長時間的連接,這樣,才能保證消息的時實性。

1、XMPP協議
1、XMPP基於xml,XMPP用TCP傳遞的是xml流。它具有xml的靈活性和擴展性。可以實現服務類實時通訊。
XMPP的核心XML流傳輸協議的定義使得XMPP能夠在一個比以往網絡通信協議更規范的平台上。借助於XML易於解析和閱讀的特性。
XMPP核心協議通信的基本模式就是先建立一個stream,然后協商一堆安全之類的東西,中間通信過程就是客戶端發送XML Stanza,一個接一個的。服務器根據客戶端發送的信息以及程序的邏輯,發送XML Stanza給客戶端。但是這個過程並不是一問一答的,任何時候都有可能從一方發信給另外一方。通信的最后階段是關閉流,關閉TCP/IP連接。
2、MQTT協議

MQTT(Message Queuing Telemetry Transport)是IBM開發的一個即時通訊的協議。
MQTT的特點:
1)、使用發布/訂閱消息模式,提供一對多的消息發布,解除應用程序耦合;
2)、對負載內容屏蔽的消息傳輸;
3)、使用 TCP/IP 提供網絡連接;
4)、有三種消息發布服務質量:
“至多一次”,消息發布完全依賴底層 TCP/IP 網絡。會發生消息丟失或重復。這一級別可用於如下情況,環境傳感器數據,丟失一次讀記錄無所謂,因為不久后還會有第二次發送。
“至少一次”,確保消息到達,但消息重復可能會發生。
“只有一次”,確保消息到達一次。這一級別可用於如下情況,在計費系統中,消息重復或丟失會導致不正確的結果。
5)、小型傳輸,開銷很小(固定長度的頭部是 2 字節),協議交換最小化,以降低網絡流量;
MQTT非常適合作為Android手機客戶端與服務器推送消息。其中Sohu,Cmstop手機客戶端中均有使用到MQTT作為消息推送消息。據Cmstop主要負責消息推送的高級研發工程師李文凱稱,隨着移動互聯網的發展,MQTT由於開放源代碼,耗電量小等特點,將會在移動消息推送領域會有更多的貢獻,在物聯網領域,傳感器與服務器的通信,信息的收集,MQTT都可以作為考慮的方案之一。
