123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- using Microsoft.Extensions.Options;
- using MQTTnet.Protocol;
- using MQTTnet.Server;
- using System.Text;
- namespace HTEX.Complex.Services.MQTT
- {
- public class MQTTEvents
- {
-
- public MQTTEvents()
- {
-
- }
- /// <summary>
- /// 客户端订阅主题事件
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- public Task _mqttServer_ClientSubscribedTopicAsync(ClientSubscribedTopicEventArgs arg)
- {
- Console.WriteLine($"ClientSubscribedTopicAsync:客户端ID=【{arg.ClientId}】订阅的主题=【{arg.TopicFilter}】 ");
- return Task.CompletedTask;
- }
- /// <summary>
- /// 关闭后事件
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- public Task _mqttServer_StoppedAsync(EventArgs arg)
- {
- Console.WriteLine($"StoppedAsync:MQTT服务已关闭……");
- return Task.CompletedTask;
- }
- /// <summary>
- /// 用户名和密码验证有关
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 消息接收事件
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 启动后事件
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- public Task _mqttServer_StartedAsync(EventArgs arg)
- {
- Console.WriteLine($"StartedAsync:MQTT服务已启动……");
- return Task.CompletedTask;
- }
- /// <summary>
- /// 客户端取消订阅事件
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- 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;
- }
- /// <summary>
- /// 客户端断开时候触发
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- /// <exception cref="NotImplementedException"></exception>
- public Task _mqttServer_ClientDisconnectedAsync(ClientDisconnectedEventArgs arg)
- {
- Console.WriteLine($"ClientDisconnectedAsync:客户端ID=【{arg.ClientId}】已断开, 地址=【{arg.Endpoint}】 ");
- return Task.CompletedTask;
- }
- /// <summary>
- /// 客户端连接时候触发
- /// </summary>
- /// <param name="arg"></param>
- /// <returns></returns>
- 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();
- //}
- }
- }
|