OGeek|极客世界-中国程序员成长平台

标题: iOS - MQTT 客户端框架确实连接/工作 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 16:26
标题: iOS - MQTT 客户端框架确实连接/工作

我正在构建一个 iOS 应用程序,我想使用 MQTT 来订阅/发布消息到 MQTT 服务器。在研究 MQTT 库后,I found this library这似乎足以满足我的目的。请注意,我已经使用 CloudMQTT 在线制作了一个 MQTT 服务器。在弄清楚如何使 CocoaPods 工作,以及如何在我的 Podfile 上添加依赖项之后,我终于启动并运行了它。在我的第一个 View 的 viewDidLoad 函数中,我尝试通过将此行添加到我的 .h 文件来连接到我的 MQTT 服务器:

@interface VBViewController : UIViewController<MQTTSessionDelegate>

在我的 .m 文件中,在 viewDidLoad 函数中,我这样做了:

MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init];
transport.host = @"mPortNumber.cloudmqtt.com";
transport.port = portNumber;

session = [[MQTTSession alloc] init];
session.transport = transport;

session.delegate=self;

[session connectAndWaitTimeout:30];

[session subscribeToTopic"username/messagesFolder/#" atLevel:2 subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss){
    if (error) {
        NSLog(@"Subscription failed %@", error.localizedDescription);
    } else {
        NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);
    }
}];

但是,在运行它时,订阅失败/成功消息都没有出现。我认为我可能使用了错误的端口号,所以我使用了提供的所有三个端口,简单端口、SSL 端口和 Websockets 端口。在这些都不起作用之后,我尝试通过使用斜杠来更改文件夹目录,但这也不起作用。

我也尝试发送和接收消息,但也没有成功。

由于我还没有更新我的 iOS 开发者许可证,所以我正在使用模拟器。我不想为了弄清楚这个简单的事情而破坏我所有的 10 个部署。这可能是无法连接到我的 MQTT 服务器的原因吗?我会怀疑,因为模拟器可以连接到互联网并使用 Safari 浏览,所以它几乎可以连接到互联网。

我在初始化/导入 MQTT 方法方面是否遗漏了什么?



Best Answer-推荐答案


使用 connectAndWaitTimeout 时不会收到任何回调。

尝试使用注释中指定的 connectWithConnectHandler(connectHandler: MQTTConnectHandler!),你会得到:

/**
@return nothing and returns immediately. To check the connect results, register as an MQTTSessionDelegate and
 - watch for events
 - watch for connect or connectionRefused messages
 - watch for error messages
 or use the connectHandler block
*/

还要确保您不需要加密即可成功连接。

关于iOS - MQTT 客户端框架确实连接/工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37238831/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) Powered by Discuz! X3.4