研究mqtt是通过websocket向浏览器客户端发布消息的一种方法。
数据可能类似于JSON对象,其字段随时间变化值。我只想发送这些更改,而不发送每条消息的整个JSON状态。
协议(或其他解决方法)中是否存在一种内置方式,可以允许客户端在连接后接收完全状态,然后仅发送增量消息?
一个可能的解决方法是将完整状态保留在设置了retain
标志的单独主题上,在建立连接后立即订阅该主题,然后在收到消息后取消订阅。但是,我们仍然会面临消息排序问题-无法保证增量主题上的消息以预期的顺序跟随最后一个状态。另外,每个感兴趣的实体最初要订阅2个主题,而不是一个主题,这会产生开销。
答案 0 :(得分:0)
不,MQTT中没有任何东西可以帮您做到这一点。
最好的方法可能是首先通过HTTP传递大型有效负载,然后为结构中的每个字段指定一个主题,然后发布每个主题的更新。如果在每个更新中都包含时间戳记,则还可以为完整数据添加时间戳记,这样,您可以在下载完整对象之前订阅更新。如果您也为此设置了时间戳,则可以先订阅更新,然后在获得全部信息后应用所需的更新。在下载大对象时,这可以解决更新问题。