什么是mqtt:

MQTT 全称为 Message Queuing Telemetry Transport(消息队列遥测传输)是一种基于发布/订阅范式的“轻量级”消息协议。该协议构建于TCP/IP协议上

MQTT三种服务:

“至多一次”,消息发布完全依赖底层 TCP/IP 网络。会发生消息丢失或重复。这一级别可用于如下情况,环境传感器数据,丢失一次读记录无所谓,因为不久后还会有第二次发送。
“至少一次”,确保消息到达,但消息重复可能会发生。
“只有一次”,确保消息到达一次。这一级别可用于如下情况,在计费系统中,消息重复或丢失会导致不正确的结果。

用python实现发布、订阅:

安装:pip install paho-mqtt 如何安装失败,可以尝试换豆瓣源pip install paho-mqtt -i https://pypi.douban.com/simple/

订阅:

import random

from paho.mqtt import client as mqtt_client

broker = #ip地址
port = 1883
topic = "/python/mqtt"
# generate client ID with pub prefix randomly
client_id = #client_id def connect_mqtt() -> mqtt_client:
def on_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc) client = mqtt_client.Client(client_id)
client.on_connect = on_connect
client.connect(broker, port)
return client def subscribe(client: mqtt_client):
def on_message(client, userdata, msg):
print(f"Received `{msg.payload.decode()}` from `{msg.topic}` topic") client.subscribe(topic)
client.on_message = on_message def run():
client = connect_mqtt()
subscribe(client)
client.loop_forever() if __name__ == '__main__':
run()

消息发布

import random
import time from paho.mqtt import client as mqtt_client
#基本链接数据同上
topic=""
def clicent_main(client,message: str):
"""
客户端发布消息
:param message: 消息主体
:return:
"""
time_now = time.strftime('%Y-%m-%d %H-%M-%S', time.localtime(time.time()))
payload = {"msg": "%s" % message, "data": "%s" % time_now}
# publish(主题:Topic; 消息内容)
client.publish(topic, json.dumps(payload, ensure_ascii=False))
print("Successful send message!")
return True

最新文章

  1. net core 控制台中文乱码的解决方案
  2. ROW_NUMBER
  3. this 的工作原理
  4. ytu 2011: C语言实验——找中间数(水题)
  5. 获取枚举类型Description特性的描述信息
  6. MyBatis代码自动生成
  7. [selenium webdriver Java]隐式的等待同步
  8. ACM1024动态规划
  9. strcmp和==比较
  10. X-factor Chains(POJ3421 素数)
  11. (转)Windows重启延迟删除,重命名技术原理
  12. laravel+vue组合的项目中引入ueditor(打包成组件形式)
  13. Python 第五天
  14. 利用反射将IDataReader读取到实体类中效率低下的解决办法
  15. 设置Firefox(火狐)浏览器的中文菜单/界面
  16. AutoIt介绍
  17. JPA与EJB3的关系
  18. dfs1321
  19. python 安装wheel .whl文件
  20. ToString()格式和用法大全,C#实现保留两位小数的方法

热门文章

  1. C语言中的typedef跟define的区别
  2. 如何清除项目git版本控制信息
  3. BGP路由协议(Border Gateway Protocol)
  4. shell——mkfifo管道
  5. SQLMAP配置洋葱路由
  6. suse 12 编译部署 Nginx
  7. Gradle进行Build 报GBK错误
  8. 彻底明白Linux硬链接和软链接
  9. Json:Java对象和Json文本转换工具类
  10. FPGA+x86构建高性能国产网络测试仪竞技之道