文章钢要:

1、了解Mosquitto服务器

2、在Liunx中搭建Mosquitto服务器

3、设置Mosquitto集群

一、Mosquitto简介

一款实现了消息推送协议 MQTT v3.1 的开源消息代理软件,提供轻量级的,支持可发布/可订阅的的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。一个典型的应用案例就是 Andy Stanford-ClarkMosquitto(MQTT协议创始人之一)在家中实现的远程监控和自动化。并在 OggCamp 的演讲上,对MQTT协议进行详细阐述。

Mosquitto管网:http://mosquitto.org/

Mosquitto最新的源码:http://mosquitto.org/files/source/

二、Liunx下安装Mosquitto

在windows下安装比较简单,在windows环境下需要先下载安装Cygwin,安装成功后在管网下载Mosquitto.exe之后点击安装即可。圆子里有很多教程讲解,就不阐述了。并且在实际开发环境中使用windows环境在少数,大部分使用Liunx,因此下面介绍下在Liunx下安装Mosquitto。

Liunx下安装Mosquitto方法有2中,下载安装包到本地安装以及yum安装。推荐用yum安装因为比较方便,如果安装失败再考虑使用压缩包安装。

使用yum安装:

1、默认情况下Mosquitto的安装需要OpenSSL的支持,所以先安装OpenSSL

yum install gcc gcc-c++

yum install openssl-devel

yum install c-ares-devel

yum install libuuid-devel

yum install wget

yum install cmake

yum install build-essential python quilt devscripts python-setuptools python3

yum install libssl-dev libc-ares-dev uuid-dev daemon openssl-devel

在安装过程中如果服务器已经安装过上述软件程序,将不会在安装,如果发现新版本或者未安装会提示更新和安装,用户输入‘Y’确认安装即可。

2、下载并编译安装mosquitto

下载压缩包(截止目前2016-11最新的压缩包是1.4.10):

wget http://mosquitto.org/files/source/mosquitto-1.4.9.tar.gz

解压:

tar -xzvf mosquitto-1.4.9.tar.gz

进入目录并安装:

cd mosquitto-1.4.9

make

make install
 
 
3、配置mosquitto.conf文件 

整个目录中最重要的文件就是mosquitto.conf,将其复制到ect下面

cp mosquitto.conf /etc/mosquitto

修改mosquitto.conf文件

cd /etc/mosquitto/

使用vi命令打开mosquitto.conf文件

vi mosquitto.conf

按“↓”移动光标,找到Default Listeners下的

(可以使用“/Extra listeners”来查找文本,按“N”键可以继续超找。按“I”键进入编辑状态,按ESC返回。退出是键入“:wq”保存退出。不保存强制退出“:q!”)

服务的端口号

#port 1883 改为 port 1883

最大连接数,-1表示不限制

#max_connections -1 改为 max_connections -1

因为我的登录用户是root,所以这里使用root

#use_username_as_clientid 改为 user root

4、启动Mosquitto服务器

执行

mosquitto -c /etc/mosquitto/mosquitto.conf

在启动的时候会出现报错的情况,执行mosquitto客户端程序时出现找不到动态库:libmosquitto.so.1

错误信息:./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory

解决方案,执行命令:

sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1

和 ldconfig 即可.

如果显示如下提示说明启动成功,警告不用管。

5、测试服务器订阅与发布

订阅服务:

mosquitto_sub -t HelloWord

mosquitto_sub 订阅命令

-t 订阅主题

Helloworld 主题名称,可以随便取名

发布服务:

mosquitto_pub -t HelloWord -h localhost -m "Hello Word"

mosquitto_pub 发布命令

-t 发布主题

Helloworld 主题名称

-h 主机地址

localhost 发布到本地,如果远程主机直接写ip地址(不用写端口号)

-m 发布的信息

“Hello world” 发布的内容

如果一切顺,应当如下图所示,可以成功订阅一条信息,并且可以成功发布信息,订阅端可以接受到信息。

 下一篇将对Mosquitto集群搭建进行阐述。
 

Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建的更多相关文章

  1. Mosquitto搭建Android推送服务(一)MQTT简介

    总体概要: MQTT系列文章分为4部分 1.MQTT简介 2.mosquitto服务器搭建 3.编写Mosquitto的可视化工具 4.使用Mosquitto完成Android推送服务 文章钢要: 对 ...

  2. Mosquitto搭建Android推送服务(三)Mosquitto集群搭建

    文章钢要: 1.进行双服务器搭建 2.进行多服务器搭建 一.Mosquitto的分布式集群部署 如果需要做并发量很大的时候就需要考虑做集群处理,但是我在查找资料的时候发现并不多,所以整理了一下,搭建简 ...

  3. Mosquitto搭建Android推送服务(四)Mosquitto服务器用户登录与权限配置

    文章钢要: 1.对服务器进行多用户配置 2.根据不同用户给予不同权限 一.Mosquitto的用户机制 mosquitto中可以添加多个用户,只有使用用户名和密码登陆服务器才允许用户进行订阅与发布操作 ...

  4. Mosquitto搭建Android推送服务番外篇一:各种报错解决

    文章钢要: 目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助. 1.安装完成后启动Mosquitto报错 执行mosquitto客 ...

  5. Android推送服务——百度云推送

    一.推送服务简介 消息推送,顾名思义,是由一方主动发起,而另一方与发起方以某一种方式建立连接并接收消息.在Android开发中,这里的发起方我们把它叫做推送服务器(Push Server),接收方叫做 ...

  6. Android推送服务(2)微信智能心跳方案

    http://mp.weixin.qq.com/s?__biz=MzAwNDY1ODY2OQ==&mid=207243549&idx=1&sn=4ebe4beb8123f1b5 ...

  7. Android推送服务(1)几种实现方式

    1.几种常见的解决方案实现原理 1)轮询(Pull)方式:应用程序应当阶段性的与服务器进行连接并查询是否有新的消息到达,你必须自己实现与服务器之间的通信,例如消息排队等.而且你还要考虑轮询的频率,如果 ...

  8. MQTT协议及推送服务(二)

    MQTT简介 MQTT全称叫做Message Queuing Telemetry Transport,意为消息队列遥测传输,是IBM开发的一个即时通讯协议.由于其维护一个长连接以轻量级低消耗著称,所以 ...

  9. Android推送技术研究

    前言 最近研究Android推送的实现, 研究了两天一夜, 有了一点收获, 写下来既为了分享, 也为了吐槽. 需要说明的是有些东西偏底层硬件和通信行业, 我对这些一窍不通, 只能说说自己的理解. 为什 ...

随机推荐

  1. 错误400-The request sent by the client was syntactically incorrect

    springMVC中,某个页面提交时报400错误,如下图.     解决方法: 1.在网上找了一下,答案是通常遇到这个错误是因为前端jsp页面的控件名称和controller中接收的参数名称不一致.但 ...

  2. 使用PrintDocument进行打印

    背景: 1.在winform中,需要直接调用打印机,进行打印处理 2.找了很多实现方法是web的处理,然后查了下度娘,发现可以使用自带类PrintDocument进行处理,所以就有了这篇文章 说明: ...

  3. C#检验参数合法性公用方法

    #region 检验参数合法性,数值类型不小于0,引用类型不能为null,否则抛出异常 /// <summary> /// 检验参数合法性,数值类型不小于0,引用类型不能为null,否则抛 ...

  4. 实用篇!Asp.Net数据传输压缩

    一.业务场景 公司关键业务模块之一考试系统试卷内容加载缓慢.加载失败,前方人员哀声四起,客户投诉,各种爆炸! 二.问题分析 1.试卷存储采用文本文件方式存储 引发问题:并发情况下IO频繁,造成过多的线 ...

  5. Error Domain=NSURLErrorDomain Code=-999 “The operation couldn’t be completed.

    转:http://www.wangzhengdong.com/blog/error-domainnsurlerrordomain-code-999-the-operation-couldnt-be-c ...

  6. Java防止SQL注入2(通过filter过滤器功能进行拦截)

    首先说明一点,这个过滤器拦截其实是不靠谱的,比如说我的一篇文章是介绍sql注入的,或者评论的内容是有关sql的,那会过滤掉:且如果每个页面都经过这个过滤器,那么效率也是非常低的. 如果是要SQL注入拦 ...

  7. float 对整形的取余运算

    取余是针对整形的,但是有时候一些特殊需求,我们需要 float 型对整形取下余数.比如,将角度化到 0- 360 范围内. 今天看到 lua 的实现方式: a % b == a - math.floo ...

  8. 【汉字】转【pīnyīn】

    引言 github地址:aizuyan/pinyin 无意中看到了overtrue/pinyin这个项目,感觉很有意思, 这个项目做了这么一件事情: 将汉字转化为拼音 刚看到这里是不是觉得没什么难度, ...

  9. Python从破门而入到夺门而出

    MD版网盘备份: 链接: https://pan.baidu.com/s/1kVJNRSz 密码: agxt 基于<简明Python教程> 一.Python概览 1.使用PyCharm是非 ...

  10. SQL语句/函数汇总

    1.CHARINDEX(短字符A,长字符B) 说明:返回A在B的位置,从1开始,若B中不存在A,则为0 例如: SELECT CHARINDEX('aaaa','abaaaacded')  ----- ...