学习mqtt协议,从网上找demo验证一下。

参考链接

https://www.jianshu.com/p/ebbe25d1c4b2

https://blog.csdn.net/xxmonstor/article/details/80479851

https://www.jianshu.com/p/b76dbc675141

https://www.ibm.com/developerworks/cn/iot/iot-mqtt-why-good-for-iot/index.html

https://www.jianshu.com/p/3d5b487c6860

https://blog.csdn.net/weixin_41656968/article/details/80848542

代理安装

在ubuntu上验证。

代理安装在本地。

wget http://emqtt.com/static/brokers/emqttd-ubuntu16.04-v2.3.9_amd64.deb

sudo dpkg -i emqttd-ubuntu16.04_v2.0_amd64.deb
启动
sudo service emqttd start
查看状态
sudo service emqttd status

使用浏览器打开EMQ控制台,http://127.0.0.1:18083,输入默认用户名:admin,默认密码public。

查看现在的客户端为0。

subscribe订阅

subscribe.py

# encoding: utf-8
import paho.mqtt.client as mqtt def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe('chat', qos=0) def on_message(client, userdata, msg):
print(msg.topic+" " + ":" + str(msg.payload)) client = mqtt.Client()
client.on_connect = on_connect # 连接到代理调用函数
client.on_message = on_message # 接收到订阅的消息调用函数
client.connect("127.0.0.1", 1883, 60)
client.loop_forever()

publish发布

publish.py

import paho.mqtt.client as mqtt

HOST = "127.0.0.1"			# 服务器地址
PORT = 1883 # 端口号 def test():
client = mqtt.Client()
client.connect(HOST, PORT, 60)
# 60表示与代理通信之间允许的最长时间段(以秒为单位)。
# 如果没有其他消息正在交换,则它将控制客户端向代理发送ping消息的速率
client.publish('chat',payload='hello tao',qos=0)
client.loop_forever() if __name__ == '__main__':
test()

验证

先运行订阅的客户端

hon@T:~/Desktop/mqtt$ python subscribe.py
Connected with result code 0

再运行发布的客户端python publish.py

在订阅可以端下面可以发现调用了on_message的内容,输出了topic名称和内容。

hon@T:~/Desktop/mqtt$ python subscribe.py
Connected with result code 0
chat :hello tao

查看代理的变化。

出现了两个client。

出现了发布的topic内容。

验证的时候一定要先运行订阅subscribe的程序,进行一直监听,然后再运行发布publish程序,才会调用on_message函数。

Liu Tao

2019-3-5

MQTT 学习记录的更多相关文章

  1. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  2. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  3. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  4. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  5. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  6. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  7. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

  8. UWP学习记录8-设计和UI之控件和模式5

    UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...

  9. UWP学习记录7-设计和UI之控件和模式4

    UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...

随机推荐

  1. HDU4655【题意+分析】

    哎这题有点意思.. 一开始肿么看都不理解题意,发现好多ACM题都这样,好多英文意思不能完全理解,只得照样例猜啦,猜不出来?? 那就靠神队友解释了,囧. 就是排列,涂色使结果最大化. 反正别人的博客把这 ...

  2. Revit API PickPoint过滤条件

    //过滤选择,加上过滤条件,没有看出来差别. [TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)] publ ...

  3. Windows2003配置集群详解

    原文: http://blog.csdn.net/xunyn/article/details/7388900 集群是在一组计算机上运行相同的软件并虚拟成一台主机系统为客户端与应用提供服务:计算机通过缆 ...

  4. 好好的P2P,咋说爆就爆?

    P2P 理财就是通过互联网理财,即个人对个人,又称点对点网络借贷 ,是指以公司为中介机构,把借贷双方对接起来实现各自的借贷需求.借款方可以是无抵押贷款或是有抵押贷款,而中介一般是收取双方或单方的手续费 ...

  5. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  6. Android GUI之Activity、Window、View

    相信大家在接触Android之初就已经知道了Activity中的setContentView方法的作用了,很明显此方法是用于为Activity填充相应的布局的.那么,Activity是如何将填充的布局 ...

  7. windows php7 安装 mongodb 扩展

    1. 打开phpinfo 查看 nts(非线程) 还是 ts (线程),然后查看操作位数 注: 86 等于 32 位 2. 下载对应的版本的php_mongodb.dll 文件下载链接: pecl m ...

  8. SpringMVC+Thymeleaf +HTML的简单框架

    一.问题 项目中需要公众号开发,移动端使用的是H5,但是如果不用前端框架的话,只能考虑JS前端用ajax解析JSON字符串了.今天我们就简单的说下前端框架Thymeleaf如何解决这个问题的: 二.开 ...

  9. 防止UI界面被输入法遮挡(画面随输入法自适应)

    应用过Android手机的朋友都知道,有时候在文本框中输入文字后,操作按钮被输入法遮挡了,不得不关闭输入法才可以继续操作. 比如下面这个画面: 画面布局: <?xmlversion=" ...

  10. hive列转行

    一.问题 hive如何将 a b a b a b c d c d c d 变为: a b ,, c d ,, 二.数据 test.txt cat column_row.txt a,b, a,b, a, ...