天天看點

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,連接配接上稍作改變就可以了。

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/152849.html原文連結:https://javaforall.cn