最近项目开发完成,总结一下在web端使用mqtt,遇到的一些问题及解决方案
问题 1 后端mqtt发送消息,前端接收不到数据
2 mqtt 同一个topic发送数据,web订阅topic数据丢失
3 后端检测web端订阅topic用户人数错误
4 uni-app 使用 mqtt无法连接
解决方案:1 后端发送数据,前端接收不到, 这个问题原因很多,服务器、网络、客户端都会有 影响,所以我们改成了后端定时推送数据,保证前端能接收
2 后端通过同一个topic推送,但是web会存在消息丢失, 当后端的qos为2 时, 某个 web用户通过topic接到消息, 后端则认为消息发送成功,不会继续发送,所以,订阅
该topic的其他web用户无法接收到数据,这个解决方案是,后端通过topic加用户id 组成一个唯一的topic,确保用户能接收
3 后端检测web订阅topic web端用户人数错误,这是因为前端在连接mqtt时,clientId 写死了,在连接mqtt时,必须生成随机clientId,确保每一个订阅用户clientId都不同,
也可以不写,mqtt库会自动生成一个随机clientId
4 uni-app mqtt连接不上,问题原因有很多(1)uni-app使用mqtt版本尽量使用3.0 , 插件demo推荐,(2)uni,app mqtt连接时,编译到app或小程序,如果是ws替换为 wx,wss替换为wxs