使用python实现mqtt的发布和订阅


Posted in Python onMay 05, 2019

需要安装的python库

使用python编写程序进行测试MQTT的发布和订阅功能。首先要安装:pip install paho-mqtt

测试发布(pub)

我的MQTT部署在阿里云的服务器上面,所以我在本机上编写了python程序进行测试。

然后在shell里面重新打开一个终端,订阅一个主题为“chat” mosquitto_sub -t chat

在本机上测试远程的MQTT的发布功能就是把自己作为一个发送信息的人,当自己发送信息的时候,所有订阅过该主题(topic)的对象都将收到自己发送的信息。

mqtt_client.py
# encoding: utf-8
import paho.mqtt.client as mqtt
HOST = "101.200.46.138"
PORT = 1883
def test():
  client = mqtt.Client()
  client.connect(HOST, PORT, 60)
  client.publish("chat","hello liefyuan",2) # 发布一个主题为'chat',内容为‘hello liefyuan'的信息
  client.loop_forever()
if __name__ == '__main__':
  test()

发布/订阅测试

# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
MQTTHOST = "101.200.46.138"
MQTTPORT = 1883
mqttClient = mqtt.Client()
# 连接MQTT服务器
def on_mqtt_connect():
  mqttClient.connect(MQTTHOST, MQTTPORT, 60)
  mqttClient.loop_start()
# publish 消息
def on_publish(topic, payload, qos):
  mqttClient.publish(topic, payload, qos)
# 消息处理函数
def on_message_come(lient, userdata, msg):
  print(msg.topic + " " + ":" + str(msg.payload))
# subscribe 消息
def on_subscribe():
  mqttClient.subscribe("/server", 1)
  mqttClient.on_message = on_message_come # 消息到来处理函数
def main():
  on_mqtt_connect()
  on_publish("/test/server", "Hello Python!", 1)
  on_subscribe()
  while True:
    pass
if __name__ == '__main__':
  main()

注解函数:

client.connect(self, host, port, keepalive, bind_address)
client.publish(self, topic, payload, qos, retain)
client.subscribe(self, topic, qos)

测试订阅(sub)

在本机上编写程序测试订阅功能,就是让自己的程序作为一个接收者,同一个主题没有发布(pub)信息的时候,就自己一直等候。

# 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")
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("www.liefyuan.top", 1883, 60)
client.loop_forever()

总结

以上所述是小编给大家介绍的使用python实现mqtt的发布和订阅,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
easy_install python包安装管理工具介绍
Feb 10 Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 Python
python中requests爬去网页内容出现乱码问题解决方法介绍
Oct 25 Python
对python append 与浅拷贝的实例讲解
May 04 Python
python实现字符串中字符分类及个数统计
Sep 28 Python
python函数与方法的区别总结
Jun 23 Python
Python实现K折交叉验证法的方法步骤
Jul 11 Python
Python Django Cookie 简单用法解析
Aug 13 Python
matplotlib绘制多个子图(subplot)的方法
Dec 03 Python
TensorFlow内存管理bfc算法实例
Feb 03 Python
Python控制台实现交互式环境执行
Jun 09 Python
Python基础知识学习之类的继承
May 31 Python
Python向excel中写入数据的方法
May 05 #Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 #Python
python使用MQTT给硬件传输图片的实现方法
May 05 #Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 #Python
Python实现数据结构线性链表(单链表)算法示例
May 04 #Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
May 04 #Python
Python实现将HTML转成PDF的方法分析
May 04 #Python
You might like
php导出excel格式数据问题
2014/03/11 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
2014/04/23 PHP
PHP如何将log信息写入服务器中的log文件
2015/07/29 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP实现针对日期,月数,天数,周数,小时,分,秒等的加减运算示例【基于strtotime】
2017/04/19 PHP
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
基于jquery & json的省市区联动代码
2012/06/26 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
JavaScript Split()方法
2015/12/18 Javascript
jQuery给元素添加样式的方法详解
2015/12/30 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JS实现一次性弹窗的方法【刷新后不弹出】
2016/12/26 Javascript
js实现消息滚动效果
2017/01/18 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
ES10的13个新特性示例(小结)
2019/09/23 Javascript
JS回调函数简单易懂的入门实例分析
2019/09/29 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
JS自定义对象创建与简单使用方法示例
2020/01/15 Javascript
django基础之数据库操作方法(详解)
2017/05/24 Python
用python代码将tiff图片存储到jpg的方法
2018/12/04 Python
Python图像处理之图像的读取、显示与保存操作【测试可用】
2019/01/04 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
对python中的*args与**kwgs的含义与作用详解
2019/08/28 Python
python3 自动打印出最新版本执行的mysql2redis实例
2020/04/09 Python
Django数据模型中on_delete使用详解
2020/11/30 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
Linux面试经常问的文件系统操作命令
2016/10/04 面试题
万户网络JAVA程序员岗位招聘笔试试卷
2013/01/08 面试题
小学生打架检讨书
2014/01/26 职场文书
法人授权委托书范本
2014/04/04 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript