Member 11859517 Ответов: 0

Как создать клиент mqtt для публикации/подписки в веб-приложении(ASP.NET)?


привет,
Я использую брокер HiveMQ для публикации и подписки. поэтому я создал приложение wpf, чтобы получить сообщение, что оно работает нормально.
и то же самое я попробовал с ASP.net но это не работает. во время отладки я могу получить данные, но не отображать их в форме.
Есть ли другой способ сделать это в веб-приложении или я что-то упустил? Плз, дайте какую-нибудь идею.

Что я уже пробовал:

private MqttClient mqttClient;
public MainWindow()
        {
            InitializeComponent();
            mqttClient = new            MqttClient(IPAddress.Parse(txtConnectionString.Text).ToString());
            mqttClient.MqttMsgPublishReceived += client_MqttMsgPublishReceived;//event
            mqttClient.MqttMsgSubscribed += client_MqttMsgSubscribed;//event
        }

private void client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs e)
        {
            this.Dispatcher.Invoke(() =>
            {
                lstSubscribe.Items.Add("Recevied..." +   System.Text.Encoding.UTF8.GetString(e.Message));
            });
        }

        private void client_MqttMsgSubscribed(object sender, MqttMsgSubscribedEventArgs e)
        {
            this.Dispatcher.Invoke(() =>
            {
                lstSubscribe.Items.Add("Topic " + txtTopic.Text);
                 lstSubscribe.Items.Add("Subscribed for id " + e.MessageId);
                 lstSubscribe.Items.Add(" ");
            });
        }

private void btnConnect_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                mqttClient.Connect(Guid.NewGuid().ToString());

                lstPublish.Items.Add("*** Connected");
            }
            catch (Exception ex)
            {
                lblError.Content = ex.Message.ToString();
            }
        }

        private void btnSubscribe_Click(object sender, RoutedEventArgs e)
        {
            mqttClient.Subscribe(new string[] { txtTopic.Text }, new byte[] { MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE });
        }

0 Ответов