using Microsoft.Extensions.Options; using MQTTnet.Protocol; using MQTTnet.Server; using System.Text; namespace HTEX.Complex.Services.MQTT { public class MQTTEvents { public MQTTEvents() { } /// /// 客户端订阅主题事件 /// /// /// public Task _mqttServer_ClientSubscribedTopicAsync(ClientSubscribedTopicEventArgs arg) { Console.WriteLine($"ClientSubscribedTopicAsync:客户端ID=【{arg.ClientId}】订阅的主题=【{arg.TopicFilter}】 "); return Task.CompletedTask; } /// /// 关闭后事件 /// /// /// public Task _mqttServer_StoppedAsync(EventArgs arg) { Console.WriteLine($"StoppedAsync:MQTT服务已关闭……"); return Task.CompletedTask; } /// /// 用户名和密码验证有关 /// /// /// public Task _mqttServer_ValidatingConnectionAsync(ValidatingConnectionEventArgs arg) { arg.ReasonCode = MqttConnectReasonCode.Success; //if ((arg.UserName ?? string.Empty) != _mqttOption.UserName || (arg.Password ?? String.Empty) != _mqttOption.Password) //{ // arg.ReasonCode = MqttConnectReasonCode.Banned; // Console.WriteLine($"ValidatingConnectionAsync:客户端ID=【{arg.ClientId}】用户名或密码验证错误 "); //} return Task.CompletedTask; } /// /// 消息接收事件 /// /// /// public Task _mqttServer_InterceptingPublishAsync(InterceptingPublishEventArgs arg) { //if (string.Equals(arg.ClientId,_mqttOption. ServerClientId)) //{ // return Task.CompletedTask; //} Console.WriteLine($"InterceptingPublishAsync:客户端ID=【{arg.ClientId}】 Topic主题=【{arg.ApplicationMessage.Topic}】 消息=【{Encoding.UTF8.GetString(arg.ApplicationMessage.PayloadSegment)}】 qos等级=【{arg.ApplicationMessage.QualityOfServiceLevel}】"); return Task.CompletedTask; } /// /// 启动后事件 /// /// /// public Task _mqttServer_StartedAsync(EventArgs arg) { Console.WriteLine($"StartedAsync:MQTT服务已启动……"); return Task.CompletedTask; } /// /// 客户端取消订阅事件 /// /// /// public Task _mqttServer_ClientUnsubscribedTopicAsync(ClientUnsubscribedTopicEventArgs arg) { Console.WriteLine($"ClientUnsubscribedTopicAsync:客户端ID=【{arg.ClientId}】已取消订阅的主题=【{arg.TopicFilter}】 "); return Task.CompletedTask; } public Task _mqttServer_ApplicationMessageNotConsumedAsync(ApplicationMessageNotConsumedEventArgs arg) { Console.WriteLine($"ApplicationMessageNotConsumedAsync:发送端ID=【{arg.SenderId}】 Topic主题=【{arg.ApplicationMessage.Topic}】 消息=【{Encoding.UTF8.GetString(arg.ApplicationMessage.PayloadSegment)}】 qos等级=【{arg.ApplicationMessage.QualityOfServiceLevel}】"); return Task.CompletedTask; } /// /// 客户端断开时候触发 /// /// /// /// public Task _mqttServer_ClientDisconnectedAsync(ClientDisconnectedEventArgs arg) { Console.WriteLine($"ClientDisconnectedAsync:客户端ID=【{arg.ClientId}】已断开, 地址=【{arg.Endpoint}】 "); return Task.CompletedTask; } /// /// 客户端连接时候触发 /// /// /// public Task _mqttServer_ClientConnectedAsync(ClientConnectedEventArgs arg) { Console.WriteLine($"ClientConnectedAsync:客户端ID=【{arg.ClientId}】已连接, 用户名=【{arg.UserName}】地址=【{arg.Endpoint}】 "); return Task.CompletedTask; } //public async Task _mqttServer_InterceptingClientEnqueueAsync(InterceptingClientApplicationMessageEnqueueEventArgs args) //{ // throw new NotImplementedException(); //} //public async Task _mqttServer_ClientAcknowledgedPublishPacketAsync(ClientAcknowledgedPublishPacketEventArgs args) //{ // throw new NotImplementedException(); //} } }