代码之家  ›  专栏  ›  技术社区  ›  Pat

我可以在mqtt服务器上编辑消息吗?

  •  0
  • Pat  · 技术社区  · 7 年前

    示例:我想像Slack offers一样实现“编辑消息”,但单击“(编辑)”后,允许用户查看消息的不同版本及其时间戳(如在Facebook中找到的评论的编辑历史),从而启用对话的“审计跟踪”。

    跟进:由于这似乎只能通过“黑客”来实现,在XMPP或MQTT或其他协议/websockets/JSON等上进行黑客攻击会更好吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   hardillb    7 年前

    一旦MQTT消息发布到代理,发布客户端就不再控制该消息。

    大多数代理也不允许您编辑消息,因为他们只会立即将消息转发给订阅了相关主题的所有客户端,并将消息排队等待任何具有持久订阅的脱机客户端。

    唯一的例外可能是mosca代理,它在消息到达代理时具有回调功能,但这不允许用户编辑消息,只有系统可能在将有效负载转发给订阅的客户端之前的瞬间更新有效负载。

        2
  •  0
  •   blp    7 年前

    Hardlib的建议是正确的,大多数MQTT实现不支持以这种方式编辑消息,实现它将打破发布者和订阅者之间的松散耦合,这是MQTT的优点。换言之,这应该在更高的层次上或通过其他手段来实现。

    1. 客户端A订阅了topic clientb/#,客户端B订阅了topic clienta/#。

    2. 客户端A向客户端A发布消息/(唯一消息id),而客户端B未处于活动连接状态。代理保留消息。

    3. 客户端B在联机时收到修改后的消息,并且(只要没有持续会话或类似的情况)不知道更改。