ObjectiveC-MQTT初次接触

首先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的模拟机,都可以成功发送或者收到订阅的信息。

时间: 2024-08-30 09:02:45

ObjectiveC-MQTT初次接触的相关文章

c++中类的初次接触

下面是我写的简单的代码,初次接触c++中的类,c++真的是博大精深啊,学习c++的路还很长,加油! 1 /*q1.cpp*/ 2 //一个简单的类极其实例化 3 #include<iostream> 4 using namespace std; 5 6 class Point{ 7 public: 8 //设置坐标 9 void setPoint(int x,int y){ 10 xPos = x; 11 yPos = y; 12 } 13 //打印坐标 14 void printPoint(

初次接触scrapy框架

初次接触这个框架,先订个小目标,抓取QQ首页,然后存入记事本. 安装框架(http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html) 创建一个项目,项目根目录输入 scrapy startproject tutorial 在spiders文件夹下面新建一个qq_spider.py,写入内容如下: import scrapy class DmozSpider(scrapy.Spider): name = "dmoz" a

初次接触JQuery

初次接触JQuery 1. 综述 JQuery,是一个JavaScript库,给JavaScript开发带来了极大的便利.它有以下好处:减少了JavaScript的代码量:分离了JavaScript和HTML,在页面里只需要定义id即可:方便地为网站提供Ajax交互. 2. JQuery代码 2.1 函数调用 $(this).hide(); 对当前HTML元素,调用hide函数,即隐藏他. $("p").hide(); 对所有的<p>元素,调用hide函数,即隐藏他. $(

[Docker]初次接触

Docker 初次接触 近期看了不少docker介绍性文章,也听了不少公开课,于是今天去官网逛了逛,发现了一个交互式的小教程于是决定跟着学习下. 仅仅是把认为重点的知识记录下来,不是非常系统的学习和笔记. 理论部分 Docker 引擎包括了两个部分,一个守护进程作为server端来管理全部的容器. 一个client.能够远程来控制服务端. Docker有公共的云端仓库 Docker Hub Registry.里面有能够使用的镜像 你能够觉得容器containers就是沙箱box中的一个进程.这个

初次接触modelsim的一些体验

  在网上查找了一些资料来学习,看来看去觉得一篇讲modelsim三种仿真方式的不错,就按着步骤一步步做了,结果可想而知,问题是一个接一个啊,摸索了两天还是有点收获的,且记下. 第一点:操控modelsim的基本方式 1.用户图形界面接口(GUI),在界面也接受命令行输入.(适合菜鸟) 2.DO文件,应该是用TCL脚步语言写的.(升级学习) 第二点:关于在modelsim添加altera仿真库的问题 在网上看到很多关于这方面的资料,但都是比较老的,然后我发现他们想要添加的库基本已经添加在新版 

初次接触CodeSmith

说到开发效率的提高,代码生成器肯定是其中必不可少的重点.说到代码生成器,鼎鼎大名CodeSmith肯定是如雷贯耳. CodeSmith最大的特点是能够自定义模板(通俗的说就是想生成什么样就可以生成什么样子,全部由自己自定义) CodeSmith相关资料CodeSmith官方网站:http://www.codesmithtools.com/CodeSmith5.0.1破解版下载:http://kewlshare.com/dl/0538fcf454d3/CodeSmith.5.0.Professio

动态规划的初次接触,简单分析

一.简单的0,1背包问题 1.题目描述:有n个重量和价值分别为Wi,Vi的物品.从这些物品中挑选出总重量不超过W的物品,求所选方案中价值总和的最大值(注:在0,1背包问题中,每个物品只有一件,可以选择房或者不放). [分析]:对于这样的问题,首先我们可以用最简单容易想到的方法,将所有可能一一例举出来,找到最合适的. 对于函数rec(int i,int j)// 这里的 i 表示的是第几个物品,而 j 表示此时背包的容量. 既然是最朴素,简单的想法,那我们就去想一想当前的这件物品我们是否要把它放入

javaweb中的乱码问题(初次接触时写)

javaweb中的乱码问题 在初次接触javaweb中就遇到了乱码问题,下面是我遇到这些问题的解决办法 1. 页面乱码(jsp) 1. 在页面最前方加上 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2. 读取数据时乱码 (servlet) 1. 在request.getParameter("nam

SSIS 初次接触 + 开发记录

第一次接触SSIS,昨天终于把一套流程走通,记一下流水. 1:安装 使用SSIS需要安装插件(VS 和Sql Server都需要另外安装). 自己使用的vs2017开发,官网有专门的 VS2017 安装SSDT的文章,但是自己电脑死活装不上,可能是公司使用了域账户和Symantec杀毒软件的原因. 没有办法,只好重新下载了最新的 VS2019 ,然后在“工具”中使用“获取功能和扩展”安装了SSIS插件,由于自己电脑装不了sql server2017,所以又申请了一台服务器安装Sql Server

mqtt第一次接触

一.接触的原因 公司最近要求接手关于系统集成道闸的部分,其中系统和第三方系统是通过mqtt进行交互的.所以提前了解一下mqtt的基础概念. 二.mqtt的基本概念 1. mqtt的定义 Message Queuing Telemetry Transport,消息队列遥测传输协议.它是基于tcp/ip协议的,同时它的设计模式是采用的发布/订阅模式. 2.mqtt协议中的成员:发布者.代理和订阅者. (1)发布者:发布者可以发布信息给其它客户端(订阅者)订阅,它发布的一个主题消息可以被订阅多次. (