一、背景
接到客户需求:需要新增Mqtt上传数据,提供了访问信息及上传格式:
用户名,密码,IP,端口,订阅,发送等等,数据上传的格式为json格式的字符串。
二、调试发现的问题
代码编写完成后,上机测试,发现如下问题:
1、上传的中文字符串乱码;
2、与服务端连接不稳定(偶尔会自动断开);
3、首次连接服务端会连接失败;
三、问题分析
1、中文字符串乱码问题,经过与客户工程师确认字符串格式:GB2312,经过优化已经解决,具体代码段:
var appMsg = new MqttApplicationMessage();
appMsg.Topic = topic;
appMsg.Payload = Encoding.GetEncoding("GB2312").GetBytes(payload);
appMsg.QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce;
appMsg.Retain = false;
client.PublishAsync(appMsg);
如果是utf-8格式,则需要将上述字符串改为utf-8即可;
2、提供几种解决思路:
(1)PC防火墙要关闭;
(2)PING 服务端的IP地址,观察网络稳定性;
(3)代码实例化mqtt客户端时,记得写入连接超时属性;
三、总结
1、上传到服务端的字符串格式以及编码方式要确认清楚;
============================================
【感兴趣的伙伴留言,可以提供服务端、客户端源代码,技术交流】
后期还会不定期分享踩过的坑以及心得,希望能帮到依然坚持在工控领域的伙伴。