码迷,mamicode.com
首页 > 其他好文 > 详细

ObjectiveC-MQTT初次接触

时间:2016-07-06 14:48:03      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:

首先iOS与mac端用的框架是:https://github.com/ckrey/MQTT-Client-Framework

使用CocoaPods导入

pod ‘MQTTClient/Websocket‘ , ‘~> 0.6.9‘

然后服务端用的是Apache Apollo

http://activemq.apache.org/apollo/index.html

然后还需要一个JDK,这里面需要一个关于JAVA_HOME的配置。当时稍微百度了一下。

 

 

首先是服务端的配置,安装好之后直接run,服务端就起来了,我们可以看到有一系列的ip地址与端口号。

我们用与MQTT协议与服务器交互的是用TCP链接的ip与端口。

 

客户端上我们首先打开pod创建的工作空间

 

需要进行MQTT通讯的类的头文件导入

#import "MQTTClient.h"

同时使该类遵循协议

<MQTTSessionDelegate>

 

需要进行MQTT的实现文件中

//创建一个传输类型的实例

MQTTCFSocketTransport *transport = [[MQTTCFSocketTransport alloc] init];

    transport.host = @"localhost";//设置传输的主机,这里我是用的是本地服务器,当然也可以使用远程的ip地址。

    transport.port = 61613;//传输主机的监听端口

    

//创建一个任务

 MQTTSession *session = [[MQTTSession alloc] init];

    session.transport = transport;//设置任务的传输类型

    session.delegate = self;//设置任务的代理为当前类

    session.userName = @"admin";//设置任务连接使用的用户名

    session.password = @"password";//设置任务连接使用的密码

 

//连接

[session connectWithConnectHandler:^(NSError *error) {

//以下部分是连接完成后执行的block

        if (!error){

    //以下部分是订阅一个话题

            [session subscribeToTopic:@"topic" atLevel:2 subscribeHandler:^(NSError *error, NSArray<NSNumber *> *gQoss){

                if (error) {

                    NSLog(@"Subscription failed %@", error.localizedDescription);

                } else {

                    NSLog(@"Subscription sucessfull! Granted Qos: %@", gQoss);

                }

            }];

        }else{

            NSLog(@"error:%@",error);

        }

    }];

 

//设置任务代理并连接成功之后,收到订阅的话题信息会执行以下

- (void)newMessage:(MQTTSession *)session

              data:(NSData *)data

           onTopic:(NSString *)topic

               qos:(MQTTQosLevel)qos

          retained:(BOOL)retained

               mid:(unsigned int)mid{

    NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSLog(@"数据:%@",dataStr);

    NSLog(@"话题:%@",topic);

    

}

 

//若要发送消息

NSString *str = @"Hello";

    NSData *data = [str dataUsingEncoding:NSUTF8StringEncoding];

    if ([session publishAndWaitData:data

                        onTopic:@"topic"

                         retain:NO

                                qos:MQTTQosLevelAtLeastOnce]){

        

    //这部分是如果发送消息成功了,可以在这里写发送成功之后的操作

    }

 

然后我的测试是mac一个小窗口,一个iOS的模拟机,都可以成功发送或者收到订阅的信息。

 

ObjectiveC-MQTT初次接触

标签:

原文地址:http://www.cnblogs.com/kptanjunhao/p/5646579.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!