在我当前的.NET项目中,我想通过MQTT向代理发布消息,但我尝试了几种方法来实现它,但它们都不起作用。我想使用M2Mqtt(Paho Link),但我也尝试MqttDotNet但没有成功。
我目前解决这个问题的方法是让最简单的实现工作,但即便是这个也行不通。我只是创建一个MqttClient实例,连接到代理(调试显示我的工作是通过' IsConnected')然后我发布一条消息(简单字符串' Local:0:user :开发&#39)。然而,我的经纪人从未收到过这条消息,而我从VisualStudio获得的唯一反应就是这4行:
Der Thread 0x13a8 hat mit Code 259(0x103)geendet。 Der Thread 0x16d4 hat mit Code 259(0x103)geendet。 Der Thread 0x1ab0 hat mit Code 259(0x103)geendet。 Der Thread 0xa48 hat mit Code 259(0x103)geendet。
此消息为德语,与提及here的消息的线程相同。
我使用此代码进行连接,发布和断开连接,并且我已尝试使用相同的代码而不使用'断开' -part。
MqttClient client = new MqttClient("127.0.0.1");
client.Connect("client");
client.Publish("cdj/new", Encoding.UTF8.GetBytes(message));
client.Disconnect();
为了确保,代理正在工作,它可以收到通过Paho MQTT Utility发送的完全相同的消息。我使用的是.NET 4.0以及M2Mqtt 4.0版(因为最新版本适用于.NET 4.5)。
我不知道我应该做些什么不同,特别是因为没有说明或错误信息表明那里出了什么问题。
答案 0 :(得分:1)
似乎我通过代码或GC在发布操作期间关闭网络套接字,所以现在我的解决方案是尽可能长时间地保持与代理的连接以发送多个消息及其工作。
作为在发布操作完成后立即关闭套接字的解决方案,我建议使用MqttMsgPublished事件来断开客户端。