gpt4 book ai didi

mqtt - 在 MQTT 中实现 XMPP 存在特性

转载 作者:行者123 更新时间:2023-12-04 22:46:30 24 4
gpt4 key购买 nike

我目前正在开发一个项目,一个使用 MQTT 的聊天应用程序,其中有 3 个客户端 A、B、C。当每个客户端加入时,他们最初为 A 订阅 2 个主题,其 A-B、A-C,而 B 订阅 A-B、B-C 和c 订阅 t0 A-C 和 B-C。这些是聊天消息发送和接收的主题。现在我想添加存在支持,以通知用户是离线还是在线。 MQTT 代理是否支持任何内置机制来实现此目标。

最佳答案

一些代理实现可能会为连接/断开连接事件提供合适的钩子(Hook)以启用此功能,但这不是代理这样做的协议(protocol)要求。

可以使用协议(protocol)的功能创建一个存在感知系统

你可以在这里阅读更多:https://github.com/mqtt/mqtt.github.io/wiki/presence

总之,当客户端连接时,它应该定义一个 Last Will 消息 0发布到主题client/[client-id]设置了保留的标志。然后它应该发布 保留 给主题的消息 client/[client-id]值为 1 .

这意味着任何人都可以订阅 client/+并获取所有已知客户端的当前状态:

  • 1的消息话题 client/A表示 A 当前已连接
  • 0的消息话题 client/A表示 A 当前已断开连接


  • 顺便说一句,您应该仔细考虑您希望客户订阅哪些主题。正如您所描述的,您让每个客户都明确订阅每个其他客户的主题。这不会很好地扩展 - 考虑如何使用通配符来管理它。

    关于mqtt - 在 MQTT 中实现 XMPP 存在特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23440043/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com