ios - 如何使用 cocoaMQTT 在 iOS 中使订阅者离线

标签 ios swift activemq mqtt

我正在使用 swift 开发 iOS。我正在我的 iOS 应用程序中使用 cocoa mqtt 协议(protocol)。 我还使用 Activemq 作为消息代理。

目标

我订阅了 ActiveMQ 上创建的主题。之后,当我取消订阅 ActiveMQ 上的主题时,我希望用户仍然是该主题的订阅者,但不会收到消息。它离线了。

我希望当订阅者再次活跃时,他可以使用主题中的待处理消息。

问题陈述

当我取消订阅该主题时,该用户不再是该主题的订阅者,并且在取消订阅期间收到的所有关于该主题发送的消息都会丢失(我没有收到它们)。

最佳答案

此问题的一个解决方案是使用 MQTT 中内置的保留消息传递功能。然后,您将收到关于每个主题发布的最后一条消息,即使您已经在之前的 session 中收到过这些消息。

另一个解决方案是对发送的消息使用 QoS 1 或 2。如果您的应用将 cleanSession 设置为 false 进行连接,并且消息是使用 QoS 1 或 2 发布的,那么您将收到与代理断开连接时发送的消息。

了解有关 MQTT QoS 的更多信息 here .

关于ios - 如何使用 cocoaMQTT 在 iOS 中使订阅者离线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46974852/

相关文章:

arrays - 从符合者数组创建 @objc 协议(protocol)类型数组

html - 如何使用 WebKit 在 HTML 中显示更多 JSON 项目?

java - 在JMS/ActiveMQ中如何使用同步来保持MessageConsumer的存活?

ios - 导航 Controller 委托(delegate)方法没有得到调用

ios - 根据数据库中字段的内容显示或隐藏按钮

swift - 无法删除 NSLAyoutConstraint/使其处于非事件状态

java - ActiveMQ:保证将消息传递给消费者

grails - 控制 Camel 路线的启动和关闭

ios - 在 ionic 3 中使用 FilePicker-Phonegap-iOS-Plugin 进行 ionic 服务时出现类型错误

performance - 我可以完全优化吗?