V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChoateYao
V2EX  ›  程序员

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

  •  
  •   ChoateYao · 2021-04-20 11:38:26 +08:00 · 367 次点击
    这是一个创建于 1099 天前的主题,其中的信息可能已经有所发展或是发生改变。
    如:拥有一个 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 接口进行请求数据更新。
    delectate
        1
    delectate  
       2021-04-20 13:30:44 +08:00
    设备 ota,增加 version 字段。后端根据 imei 和 version 匹配,按照对应格式下发相应版本数据。
    如果设备不能 ota,那么后端识别设备上报的内容特征,猜测出版本号,数据库绑定设备 imei 和 version,按照对应格式下发相应版本数据。

    这个和 mqtt 完全无关。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2640 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:49 · PVG 23:49 · LAX 08:49 · JFK 11:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.