--------mqtt 服务器安装------------
一、安装 centos72 开发环境
1、在docker 下安装 centos72 环境
https://github.com/eclipse/mosquitto
docker pull hub.c.163.com/public/centos:7.2-tools
docker run --name centos72mqtt -p 2203:22 -p 1883:1883 -v d:/go:/data -d hub.c.163.com/public/centos:7.2-tools
1883 是服务mqtt端口
2203 是ssh 访问的 端口
2、更新centos72 并 安装编译工具,gcc和g++
yum update
yum install gcc-c++
3.安装cmake git make
yum install cmake git make
4、安装mosquitto编译所需的依赖库
yum install openssl-devel c-ares-devel e2fsprogs-devel uuid-devel libuuid-devel
ln -s /usr/local/lib/libwebsockets.so.5 /usr/lib64/libwebsockets.so.5
ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib64/libmosquitto.so.1
7、下载 mosquitto
wget https://mosquitto.org/files/source/mosquitto-1.5.4.tar.gz
tar zxvf mosquitto-1.5.4.tar.gz
此时mosquitto可以直接make编译了,但是不支持websocket协议,下面开启websocket协议
5.修改config.mk 启用websocket
WITH_WEBSOCKETS := yes
6.修改mosquitto.conf 设置端口等
默认 listener 1883 本文使用默认端口 所以不用修改
7.下载libwebsocket开发库
git clone https://git.oschina.net/woniu201/libwebsockets.git
tar -zxvf libwebsockets-v1.5-stable.tar.gz
8.开始编译安装libwebsockets
cd libwebsockets-v1.5-stable
mkdir build
cd build
cmake ..
make
make install
8、进入mosquitto-1.5.4目录
make
make install
9.添加mosquitto user
adduser mosquitto
演示相关
https://www.cnblogs.com/chen1-kerr/p/7258487.html
启动服务
cd src
./mosquitto -c ../mosquitto.conf -v
mosquitto_sub -d -t topic01
mosquitto_pub -t topic01 -m mmmmmmmmmmm
mosquitto_pub -t topic01 -m "sssssssssssssss"
------主要参考资料-----
https://www.2cto.com/kf/201701/592690.html
mqtt 客户端 相关
https://www.jianshu.com/p/4fd95cae1a9c js 链接mqtt
https://blog.csdn.net/wangshuminjava/article/details/80252391 集群相关
https://blog.csdn.net/bona020/article/details/73608618 windows 客户端
https://github.com/novastone-media/MQTT-Client-Framework
---nodejs使用
https://github.com/mqttjs/MQTT.js/tree/master/examples
cd /usr/local/
wget https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.gz
下载完成后解压
tar zxvf node-v8.9.4-linux-x64.tar.gz
重命名为node
mv node-v8.1.4-linux-x64 node
配置环境变量
vim /etc/profile
#set for nodejs
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
source /etc/profile
node -v
npm -v
----安装
npm install mqtt --save
npm install mqtt-connection --save
---topic 设计
http://itindex.net/detail/58722-mqtt-topic-%E9%80%9A%E9%85%8D%E7%AC%A6
主题层级分隔符 / : 用于分割主题层级,/分割后的主题,这是消息主题层级设计中很重要的符号。 比方说: aaa/bbb和 aaa/bbb/ccc 和aaa/bbb/ccc/ddd ,这样的消息主题格式,是一个层层递进的关系,可通过多层通配符同时匹配两者,或者单层通配符只匹配一个。 这在现实场景中,可以应用到:公司的部门层级推送、国家城市层级推送等包含层级关系的场景。
单层通配符 +: 单层通配符只能匹配一层主题。比如: aaa/+ 可以匹配 aaa/bbb ,但是不能匹配aaa/bbb/ccc。 单独的+号可以匹配单层的所有推送
多层通配符 #: 多层通配符可以匹配于多层主题。比如: aaa/# 不但可以匹配aaa/bbb,还可以匹配aaa/bbb/ccc/ddd。 也就是说,多层通配符可以匹配符合通配符之前主题层级的所有子集主题。单独的#匹配所有的消息主题.
注: 单层通配符和多层通配符只能用于订阅(subscribe)消息而不能用于发布(publish)消息,层级分隔符两种情况下均可使用。
https://segmentfault.com/a/1190000016561271