ios - 我在 ios 应用程序中使用 MQTTClient,我想在订阅主题时保存用户的数据

标签 ios objective-c mobile mqtt

我在谷歌上搜索过这个,但显然没有人尝试过这个或者这不是最佳实践。

我得到了 MQTT 客户端对象并且能够通信,当我想保存他们的聊天并打扰客户端时出现问题,以便当他们中的任何一个上线或离线时另一个可以得到通知。

一个伪代码或只是一个指导这种方法的流程就足够了,因为我无法想象上述过程的流程。

请指导我阅读教程或帮助我了解此处的流程。

这是我准备作为研究 MQTT 系统的一部分的演示。

最佳答案

您正在寻找的是可以使用 MQTT 实现的,但您需要使用两个功能。

首先,您必须确保您的客户端使用非干净 session 进行连接(并确保它们始终使用相同的客户端名称进行连接,该名称对它们而言必须是唯一的)。这将确保客户端的状态保存在 MQTT 代理上;换句话说,只需在客户端第一次连接时添加订阅。

其次,您需要使用 QoS 1 订阅和 QoS 1 发布。以 QoS 1 发布将保证消息已被 MQTT 代理成功接收并传送到所有目的地。 QoS 1 订阅将保证将消息传递给客户端,无论它在发布时是否在线(假设它在当前离线时请求了非干净 session )。

此外,我建议使用 QoS 0 在客户端“在线”时发送通知(但所有其他“聊天”消息可以并且应该在 QoS 1 下发送/接收)。

关于ios - 我在 ios 应用程序中使用 MQTTClient,我想在订阅主题时保存用户的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32250339/

相关文章:

ios - 仅制作一个 ios tabbar app 纵向选项卡

ios - 如何在 ios 中的 UIAlertView 上显示所有带有普通字体的按钮文本

javascript - jquery - .mouseover 功能并不总是适用于移动设备

java - 从手机读取移动提供商

ios - UIView 在呈现其他 View Controller 后重置为初始值

ios - Multipart/Formdata 图片上传,获取文件

iOS,PopOverPresentationController 问题,.xib

javascript - 在移动设备的谷歌地图上禁用可拖动

ios - SecItemAdd() 返回 errSecInteractionNotAllowed (-25308)

ios - 无法在 iOS 中设置按钮宽度