搭建自己的MQTT服务器

物联网电子世界

百家号08-2903:04

MQTT协议是广泛应用的物联网协议,使用测试MQTT协议需要MQTT的代理。有两种方法使用MQTT服务,一是租用现成的MQTT服务器,如阿里云,百度云,华为云等公用的云平台提供的MQTT服务,使用公用的MQTT服务器的好处是省事,但如果仅仅用于测试学习还需要注册帐号,灵活性差些,有的平台还需要付费。另一方法是自己使用开源的MQTT组件来搭建。

MQTT服务器非常多,如apache的ActiveMQ,emtqqd,HiveMQ,Emitter,Mosquitto,Moquette等等。

这里介绍的是用轻量级的mosquitto开源项目来搭建一个属于自己的MQTT服务器。

第一步:需要安装一台linux主机,这不多介绍,可以使用真机安装也可以使用虚拟机安装。如果仅仅是自己测试使用都可以。

第二步:下载mosquitto需要的依赖

sudo apt-get install libssl-devsudo apt-get install uuid-devsudo apt-get install cmake

第三步:下载mosquitto并解压,现在mosquitto官网最新的版本是1.5.1

tar xzvf mosquitto-1.5.1.tar.gz

第四步:编译

cd mosquitto-1.5.1/

make

make install

第五步:启动mosquitto

./mosquitto -v

1535473957: mosquitto version 1.5.1 starting

1535473957: Using default config.

1535473957: Opening ipv4 listen socket on port 1883.

1535473957: Opening ipv6 listen socket on port 1883.

这时候mosquitto就会以默认的参数启动。如果需要带配置文件可以修改配置文件mosquitto.conf,

启动时候加上参数 -c,

./mosquitto -c mosquitto.conf

可以看到,mosquitto监听的端口为1883.

这时候我们的MQTT服务器就搭建好了。可找一个mqtt客户端来测试一下。

先发布一个主题“home/garden/fountain/2”

内容是“hello world”

这时候在mosquitto会打印出下面的log

535474247: New connection from 192.168.1.105 on port 1883.

1535474247: New client connected from 192.168.1.105 as MQTT_FX_Client (c1, k60).

1535474247: No will message specified.

1535474247: Sending CONNACK to MQTT_FX_Client (0, 0)

1535474307: Received PINGREQ from MQTT_FX_Client

1535474307: Sending PINGRESP to MQTT_FX_Client

1535474339: Received PUBLISH from MQTT_FX_Client (d0, q0, r0, m0, 'home/garden/fountain/2', ... (12 bytes))

1535474367: Received PINGREQ from MQTT_FX_Client

1535474367: Sending PINGRESP to MQTT_FX_Client

订阅主题“home/garden/fountain/2”

可以看到收到了自己发布的消息。

用wireshark抓包

可以看到抓到了一个MQTT的publish的报文。

最新文章

  1. ueditor工具栏更改按钮的默认操作
  2. Coursera Machine Learning: Regression 证书
  3. 【Swift学习】Swift编程之旅---属性(十四)
  4. iOS开发小技巧--TableView Group样式中控制每个section之间的距离
  5. 搭个 Web 服务器(一)
  6. c++ const总结
  7. Android工具包
  8. win7下登陆中国银行网上银行IE浏览器版本过高问题解决
  9. CSS user-select属性拾遗
  10. 一个测ip和端口是否联通的工具类
  11. Android进程机制
  12. 201521123013 《Java程序设计》第9周学习总结
  13. 参加Java培训到底靠不靠谱?
  14. c语言的第四次作业
  15. (九十)使用多个storyboard+代码实现控制器的分开管理
  16. leveldb(ssdb)性能、使用场景评估
  17. WinForm外包公司 WInform外包项目监控案例展示
  18. Redis常用命令【字符串】
  19. python异步编程之asyncio(百万并发)
  20. codeforces 14A - Letter & codeforces 859B - Lazy Security Guard - [周赛水题]

热门文章

  1. GOF23设计模式之原型模式(prototype)
  2. android 网络连接判断
  3. windows 安装redis
  4. git clone 后使用子分支
  5. node 中的定时器, nextTick()和setImmediate()的使用
  6. 逻辑IO及当前模式读和一致性读的总结杂记
  7. centos7.3安装python3.6.5
  8. HTML5 File API解读
  9. 如何查找EI 及SCI 索引
  10. Linux下编译、安装并启动apache