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 简记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php解压功能的函数
- 下一篇: php实现解压功能的函数