日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

mqttnet 详解_mqttnet 简记

發布時間:2023/12/15 综合教程 34 生活家
生活随笔 收集整理的這篇文章主要介紹了 mqttnet 详解_mqttnet 简记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.mqttnet開源庫,https://github.com/chkr1011/MQTTnet

2.服務器端和客戶端

服務器端和客戶端兩個,他們需要保持長連接,主要是通過訂閱和發布來進行消息的傳遞交換。

MQTT 服務端主要用于與多個客戶端保持連接,并處理客戶端的發布和訂閱等邏輯。一般很少直接從服務端發送消息給客戶端(可以使用mqttServer.Publish(appMsg);直接發送消息),多數情況下服務端都是轉發主題匹配的客戶端消息,在系統中起到一個中介的作用。

而客戶端主要是通過向服務端訂閱它感興趣(主題)的消息,另一些客戶端向服務端發布(主題)消息,服務端將訂閱和發布的主題進行匹配,并將消息轉發給匹配通過的客戶端。

3連接,通信

(1)服務器端啟動服務:

public static IMqttServer mqttServer = null;

// 配置一個mqtt服務.

var optionsBuilder = new MqttServerOptionsBuilder()

//連接記錄數,默認 一般為2000

.WithConnectionBacklog(2000)

//服務器連接端口

.WithDefaultEndpointPort(port)

//連接驗證器

.WithConnectionValidator(ValidatingMqttClients())

//持續會話

.WithPersistentSessions()

;

// 建立一個MQTT服務.

mqttServer = new MqttFactory().CreateMqttServer();

mqttServer.ApplicationMessageReceived += MqttServer_ApplicationMessageReceived;

mqttServer.ClientSubscribedTopic += MqttServer_ClientSubscribedTopic;

mqttServer.ClientUnsubscribedTopic += MqttServer_ClientUnsubscribedTopic;

mqttServer.ClientConnected += MqttServer_ClientConnected;

mqttServer.ClientDisconnected += MqttServer_ClientDisconnected;

//啟動mqtt服務

await Task.Run(async () => { await mqttServer.StartAsync(optionsBuilder.Build()); });

(2)客戶端

與服務器端連接

連接語句:

private IMqttClient mqttClient = null;

//實例化 創建客戶端對象

var Factory = new MqttFactory();

mqttClient = Factory.CreateMqttClient();

mqttClient.ApplicationMessageReceived += MqttClient_ApplicationMessageReceived;

mqttClient.Connected += MqttClient_Connected;

mqttClient.Disconnected += MqttClient_Disconnected;

//調用異步方法連接到服務端

await mqttClient.ConnectAsync(option());

option的信息設置:

public IMqttClientOptions option()

{

//連接到服務器前,獲取所需要的MqttClientTcpOptions 對象的信息

var options = new MqttClientOptionsBuilder()

.WithClientId(ClientId) // clientid是設備id

.WithTcpServer(IP, Port) //onenet ip:183.230.40.39 port:6002

.WithCredentials(UserName,pwd) //username為產品id 密碼為鑒權信息或者APIkey

//.WithTls()//服務器端沒有啟用加密協議,這里用tls的會提示協議異常

.WithCleanSession(false)

.WithKeepAlivePeriod(TimeSpan.FromSeconds(2000))

.Build();

return options;

}

連接上以后訂閱主題:

發布主題:

4.

服務端支持ClientConnected、ClientDisconnected和ApplicationMessageReceived事件,分別用來檢查客戶端連接、客戶端斷開以及接收客戶端發來的消息。

客戶端支持Connected、Disconnected和ApplicationMessageReceived事件,用來處理客戶端與服務端連接、客戶端從服務端斷開以及客戶端收到消息的事情。

5.

通過 mqtt接入onenet,其實也就是把onenet 平臺當做mqtt broker,連接上稍作改變就可以了。

總結

以上是生活随笔為你收集整理的mqttnet 详解_mqttnet 简记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。