我可以在mqtt服务器上编辑消息吗?
构建一个即时聊天应用程序(本地IOS和网络)。 探索是否使用XMPP或MQTT作为应用程序协议。 貌似我不能让用户在XMPP上编辑旧信息。 消息是否可以在MQTT上编辑?
例如:我想实现“编辑消息”,就像Slack优惠一样,但点击“(编辑)”后,用户可以看到不同版本的消息及其时间戳(就像您在Facebook中发现的注释的编辑历史记录一样),启用会话的“审计跟踪”。
后续工作:看起来这只能通过“黑客”来实现,那么最好是在XMPP或MQTT或其他协议/ websockets / JSON等上完成黑客攻击?
一旦将MQTT消息发布给代理,发布客户端根本无法控制该消息。
大多数经纪人不会允许您编辑邮件,因为他们会立即将邮件转发给订阅相关主题的所有客户端,并将邮件排队等待具有持久订阅的任何离线客户端。
唯一的例外可能是mosca代理在消息到达代理时有回调,但是这不允许用户编辑消息,只有系统可能在它被转发到订阅之前的瞬间更新有效载荷客户端。
Hardlib的建议是正确的,以这种方式编辑消息不被大多数MQTT实现支持,并且实现它将打破MQTT优点的发布者和订阅者之间的松散耦合。 换句话说,这应该在更高层次上或通过其他手段来实施。
也就是说,如果我理解编辑是指能够更改经纪人转发给初次发布期间不在线的客户端的能力,则可以使用保留的消息来实现此功能。 考虑这个:
客户端A订阅主题客户端/#并且客户端B订阅主题客户端/#。
客户端A发布消息给客户端/(唯一消息ID),而客户端B未主动连接。 经纪人保留该消息。
客户端A决定编辑消息(通过您设计的某个界面),他们发布了一条修改后的消息给客户端/(唯一消息ID),该消息替换了消息,并从订阅者的角度编辑了该消息。
客户端B在上线时收到修改后的消息,并且(只要没有持久会话或类似事件)不知道更改。
从这个例子中,你可能可以知道为什么这是一个坏主意,因为服务器会保留每个单独的消息在不同的主题,并可能需要定期修剪......没有提到它会弄乱时间戳,并需要各种各样的其他工作。 但是,如果您有某种原因需要通过这种方式来实现,那么您可以共同使用某些可用的东西。
链接地址: http://www.djcxy.com/p/16827.html