public SendForm() { InitializeComponent(); _pingDic = new Dictionary <string, PingInfo>(); _syncContext = SynchronizationContext.Current; _mqttClientHelper = new MqttClientUtil.MqttClientHelper(); _sendMessageHelper = new SendMessageHelper(); _recvMessageHelper = new MessageHelper(); _mqttMsgHandler = new SendMqttMsgHandler(); _mqttClientHelper.OnMqttConnect += OnMqttConnect; _mqttClientHelper.OnMqttMessage += OnMqttRecvMessage; _mqttClientHelper.OnErrorMessage += OnMqttErrorMessage; //MQTT错误消息 _sendMessageHelper.OnSendMessage += OnMqttSendMessage; _recvMessageHelper.OnMessage += OnRecvMessage; _mqttMsgHandler.OnLogMsg += OnLogMsg; _mqttMsgHandler.OnErrorMsg += OnErrorMsg; _mqttMsgHandler.OnPublishMsg += OnPublishMsg; _mqttMsgHandler.OnPangMsg += OnPangMsg; _mqttClientHelper.InitMqttParas( MqttClientConstants.MqttClientSendTopic, MqttClientConstants.MqttClientRecvTopic, MqttClientConstants.MqttClientHeartbeatTopic, MqttMessageHandler.GetWillMessage()); _recvMessageHelper.Start(); _mqttMsgHandler.Init(); }
public MqttHandler(IConfiguration config, IHubContext <MessageHub> hubContext, IGamerContextMethods gamerStorage) { Id = Guid.NewGuid(); _config = config; _hubContext = hubContext; _gamerStorage = gamerStorage; var key = _config.GetValue <string>("MqttSettings:BrokerUri"); _messageHandler = new MqttMessageHandler(key); _messageHandler.Subscribe(Topics.ScoreUpdate); _messageHandler.MqttMsgPublishReceived += _messageHandler_MqttMsgPublishReceived; }
private void Channel_OnReceive(object sender, ChannelReceivedEventArgs args) { MqttMessage msg = MqttMessage.DecodeMessage(args.Message); MqttMessageHandler handler = MqttMessageHandler.Create(session, msg); MqttMessage response = handler.ProcessAsync().GetAwaiter().GetResult(); if (response != null) { channel.SendAsync(response.Encode()).GetAwaiter(); } }
private async Task ProcessMessageAsync(MqttMessage message) { try { MqttMessageHandler handler = MqttMessageHandler.Create(session, message); MqttMessage msg = await handler.ProcessAsync(); if (msg != null) { await Channel.SendAsync(msg.Encode()); } } catch (Exception ex) { logger.LogError(ex, $"MQTT adapter ProcessMessageAsync error on channel '{Channel.Id}'."); OnError.Invoke(this, new ProtocolAdapterErrorEventArgs(Channel.Id, ex)); } }
private void Channel_OnReceive(object sender, ChannelReceivedEventArgs args) { MqttMessage msg = MqttMessage.DecodeMessage(args.Message); MqttMessageHandler handler = MqttMessageHandler.Create(session, msg, dispatcher); try { MqttMessage message = handler.ProcessAsync().GetAwaiter().GetResult(); if (message != null) { channel.SendAsync(message.Encode()).GetAwaiter(); } } catch (Exception ex) { Console.WriteLine(ex.Message); Trace.TraceError(ex.Message); OnChannelError?.Invoke(this, new ChannelErrorEventArgs(channel.Id, ex)); } //Task task = Task.Factory.StartNew(async () => //{ // try // { // MqttMessage message = await handler.ProcessAsync(); // if (message != null) // { // await channel.SendAsync(message.Encode()); // } // } // catch(Exception ex) // { // Console.WriteLine(ex.Message); // Trace.TraceError(ex.Message); // } //}); //Task.WaitAll(task); //if (task.Exception != null) //{ // OnChannelError?.Invoke(this, new ChannelErrorEventArgs(channel.Id, task.Exception.InnerException)); //} }
private void Channel_OnReceive(object sender, ChannelReceivedEventArgs args) { MqttMessage msg = MqttMessage.DecodeMessage(args.Message); MqttMessageHandler handler = MqttMessageHandler.Create(session, msg, dispatcher); try { MqttMessage message = handler.ProcessAsync().GetAwaiter().GetResult(); if (message != null) { Channel.SendAsync(message.Encode()).GetAwaiter(); } } catch (Exception ex) { Console.WriteLine(ex.Message); Trace.TraceError(ex.Message); OnChannelError?.Invoke(this, new ChannelErrorEventArgs(Channel.Id, ex)); } }
private static void MqttTests() { var client = new MqttMessageHandler("tpg-hackathon.westeurope.cloudapp.azure.com");//new MqttMessageHandler("169.254.151.119"); client.MqttMsgPublishReceived += PublishReceived; var gamerId = Guid.NewGuid(); client.Subscribe(Topics.Gamer); var packmanPlayer = new Gamer() { Id = gamerId, }; client.Publish <Gamer>(Topics.Gamer, packmanPlayer); client.Subscribe(Topics.Score); var score = new Score(gamerId, 1337); client.Publish <Score>(Topics.Score, score); }
/// <summary> /// Processes a receive MQTT message and a response or null (no response). /// </summary> /// <param name="message"></param> /// <returns></returns> public async Task <MqttMessage> ReceiveAsync(MqttMessage message) { MqttMessageHandler handler = MqttMessageHandler.Create(this, message); return(await handler.ProcessAsync()); }