1) 客戶端連接
CZGL.AliIoTClient 中,有兩個連接到阿里雲物聯網服務器的方法:
public CZGL.AliIoTClient.ConnectCode ConnectIoT(string[] SubTopic,
[byte[] QOS = null],
[ushort keepAlivePeriod = 60])
public System.Threading.Tasks.Task<CZGL.AliIoTClient.ConnectCode>
ConnectIoTAsync(string[] topics,
[byte[] QOS = null],
[ushort keepAlivePeriod = 60])
參數說明及返回值:
參數名稱 | 類型 | 說明 |
---|---|---|
SubTopic | string[] | 要訂閱的 Topic 列表,只有先訂閱這個 Topic ,纔會接收到服務器推送這個 Topic |
QOS | byte[] | 每個Topic都配置一個QOS,如果爲空,將會爲每個Topic設置 QOS=0x00,注意QOS只有0,1,2三種,因此使用byte最合適 |
keepAlivePeriod | ushort | 存活監測週期,MQTT 通訊要求每間隔一段時間,客戶端及時反饋,以此證明客戶端的存活,超過這個週期,服務器會認爲客戶端已經掉線。 |
返回值 | ConnectCode | 是連接返回狀態的代碼,枚舉類型,即使因爲密鑰錯誤、網絡斷開等造成連接失敗,不會觸發異常,會返回狀態碼 |
每個 Topic 都有 一個 QOS 屬性,SubTopic 的 長度和 QOS 的長度應當一致,索引位置也要對應。
QOS 的含義:
- QOS = 0 ,最多一次
- QOS = 1,至少一次
- QOS = 2,只有一次
ConnectCode:
當客戶端嘗試與服務器建立連接,可能成功也可能失敗,此時會返回具體的連接狀態信息,ConnectCode 枚舉如下:
枚舉名稱 | 枚舉值 | 說明 |
---|---|---|
conn_accepted | 0x00 | 連接成功 |
conn_refused_prot_vers | 0x01 | 協議版本 |
conn_refused_ident_rejected | 0x02 | 認證被拒絕 |
conn_refused_server_unavailable | x03 | 服務器403/404等 |
conn_refused_username_password | 0x04 | 賬號密碼錯誤 |
conn_refused_not_authorized | 0x05 | 沒有授權 |
unknown_error | 0x06 | 其它未知錯誤 |
示例:
var code = client.ConnectIoT(topics, null, 60);
Console.WriteLine("連接狀態:" + code);
2)斷開連接
public bool ConnectIoTClose()
斷開連接,會徹底釋放 AliIoTClientJson 對象,而不僅僅是離線,如需重新連接,請重新 new 一個對象;
示例:
client.ConnectIoT(topics,null,60);
3) 查看狀態
查看客戶端是否與服務器保持連接:
public bool isConnected { get; }
示例:
Console.WriteLine("是否與服務器連接保持連接:" + client.isConnected);