在物联网中经常会使用的 MTQQ 等技术来进行信息通讯,那么如何让同样消息类型不同的数据结构兼容不同版本的客户端?

2021-04-20 11:38:26 +08:00
 ChoateYao
如:拥有一个 Topic:A
2015 年数据结构{ action_id: 1, playload:{user_id: 1, username: 小明, age: 18}}
2019 年数据结构{ action_id: 1, playload:{user:{id:1, username: 小明, age: 18}, school:{name:实验小学}, grade: {name: 一年级}}}

以上面这个例子,如何在服务端做到新老设备同事能够处理该消息。

我曾经想过 3 种解决方案:
1. 2015 年数据结构上不变动,新增 school 和 grade 字段
2. 对于不同的设备版本进行版本归类,然后再根据不同版本进行数据组装推送
3. 消息推送里面不附带具体数据,只标记有数据更新,然后通过 HTTP 接口进行请求数据更新。
370 次点击
所在节点    程序员
1 条回复
delectate
2021-04-20 13:30:44 +08:00
设备 ota,增加 version 字段。后端根据 imei 和 version 匹配,按照对应格式下发相应版本数据。
如果设备不能 ota,那么后端识别设备上报的内容特征,猜测出版本号,数据库绑定设备 imei 和 version,按照对应格式下发相应版本数据。

这个和 mqtt 完全无关。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/771863

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX