mosquitto(MQTT)服务器搭建和基本使用
一、安装
搭建一个mqtt服务器,这里我们采用mosquitto
1、 下载地址:https://mosquitto.org/download/
2、 选择windows:https://mosquitto.org/files/binary/win64/mosquitto-2.0.18-install-windows-x64.exe
3、 右键安装即可
默认的安装路径在这里:C:\Program Files\mosquitto
二、修改配置文件
1、 进入mosquitto的安装目录,找到配置文件
C:\Program Files\mosquitto\ mosquitto.conf
2、 修改mosquitto指定的监听端口
listener 8899

3、 关闭mosquitto的匿名登录功能
allow_anonymous false

4、 修改配置用户的配置文件路径(这里要用绝对路径)
password_file D:\other\mosquitto\pwd.emample

三、启动
1、 进入windows的service。启动mqtt broker服务

2、命令行启动:mosquitto.exe -c mosquitto.conf -v
四、使用
1、用python写一个订阅者的代码
import paho.mqtt.client as mqtt
import ssl context = ssl.create_default_context()
# 加载证书
context.load_default_certs() # 将证书转换为常量
cert_data = ssl.DER_cert_to_PEM_cert(context.get_ca_certs()[0]) broker = '127.0.0.1'
port = 7788
topic = "AIOT" # 当客户端和服务端连接成功后执行的回调函数
def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}") # 当连接成功后,客户端订阅一个主题,并消费该主题的消息
client.subscribe(topic=topic) # 当客户端订阅的主题收到消息的时候执行的回调函数
def on_message(client, userdata, msg):
# client 那个客户端
# userdata 用户数据
# msg 实际的消息对象
print(msg.topic+" "+str(msg.payload)) # 实例化一个客户端,实现mqtt协议版本3.1、3.1.1、5.0的客户端类,是一个主要的与MQTT服务端通信的类
client = mqtt.Client() # 实例化的时候可以传递参数进去
# client_id="",
# 唯一的客户端ip字符串,当前连接mqtt服务器时候使用,如果cliendid长度为0,则会自动随机生产一个clientid,这种情况下,clean_session参数必须是true # clean_session=None,
# 决定clint类型的参数,如果为true,当client失去连接时候中间人将删除所有关于这个client的信息,如果为false,则说明这是一个永久的client,当失去连接的时候,发布的消息和队列里的消息
# 都会被保持。
# 注意,当失去连接的时候clinet永远不会抛弃自己需要发布的消息,当调用connetc()/reconnect()会重新发送这些消息
# userdata=None, # 用户定义的任何类型的数据将被传输为userdata,后面可以使用user_data_set()来更新这个参数
# protocol=MQTTv311,
# client使用的mqtt版本
# transport="tcp",
# 设置通信机制,websocket或者tcp、一个是websocket传输,一个tcp传输
# reconnect_on_failure=True
# 连接失败是否重新连接 # 客户端绑定回调方法,其实这里定义的很多回调函数
client.on_connect = on_connect
client.on_message = on_message
# client.on_disconnect
#
# client.on_publish # 客户端连接mqtt broker服务器
client.connect(bind_address=broker, bind_port=port, keepalive=60)
# client.connect_async() # 客户端和mqtt broker服务器断开连接 client.disconnect()
# 永久执行,保持和mqtt broker服务端的长期通信
client.loop_forever()
我们当然也可以用命令行的方式启动订阅者,可以通过help来查询使用方法
mosquitto_sub.exe –help

2、发布者代码
import paho.mqtt.client as mqtt
import time broker = '127.0.0.1'
port = 8899
topic = "AIOT" def on_connect(client, userdata, flags, rc):
print(f"Connected with result code {rc}") client = mqtt.Client()
client.on_connect = on_connect
client.connect(broker, port, 60)
for i in range(60):
client.publish(topic, payload=i, qos=0, retain=False)
print(f"send {i} to a/b{topic}")
time.sleep(1) client.loop_forever()
当然我们可以使用命令行的方式启用生产者,可以通过help来查询使用方法
mosquitto_pub.exe –help

3、通过证书连接mqtt broker
import paho
import ssl mqttc = paho.mqtt.client.Client('my_client')
...
# 构建一个SSL上下文
SSL_CTX = {
'ssl_port': 8884,
'ca': "/ ca.crt",
'client_cert': '/client/client.crt',
'client_key':" /client/client.key",
'cert_reqs': None,
'tls_version': None,
'ciphers': None,
'insecure': False # 关闭insecure选项
}
# 设置TLS参数
mqttc.tls_set(SSL_CTX['ca'],
certfile=SSL_CTX['client_cert'],
keyfile=SSL_CTX['client_key'],
cert_reqs=SSL_CTX['cert_reqs'],
tls_version=SSL_CTX['tls_version'],
ciphers=SSL_CTX['ciphers'])
# ca_certs=None, certfile=None, keyfile=None, cert_reqs=None, tls_version=None, ciphers=None, keyfile_password=Non
# 要求验证服务端证书中域名与mqtt连接创建时输入的broker域名一致
mqttc.tls_insecure_set(SSL_CTX['insecure'])
mosquitto(MQTT)服务器搭建和基本使用的更多相关文章
- Mqtt服务器搭建
.bg { background: #99CC99 } Mqtt服务器搭建 测试环境:CentOS64位 1.安装基础软件 yum install gcc-c++ yum install cmake ...
- 常见MQTT服务器搭建[转载]
简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠的网络的进行远程传感器和控制设备通 ...
- 常见MQTT服务器搭建与试用
常见MQTT服务器搭建与试用 简介 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,它比较适合于在低带宽.不可靠 ...
- 个人智能家居系统 - MQTT服务器搭建(centOS7.3)
个人智能家居系统 - MQTT服务器搭建(centOS7.3) 0x00 参考 在CentOS7 上安装mosquitto1.4.1服务器,实现MQTT信息推送功能并增加websocket功能 mos ...
- Apollo mqtt 服务器搭建
html { overflow-x: initial !important } :root { --bg-color: #ffffff; --text-color: #333333; --select ...
- MQTT——服务器搭建(一)
MQTT介绍 MQTT,是IBM推出的一种针对移动终端设备的基于TCP/IP的发布/预订协议,可以连接大量的远程传感器和控制设备: 轻量级的消息订阅和发布(publish/subscribe)协议 建 ...
- MQTT服务器搭建--Mosquitto用户名密码配置
Mosquitto用户认证配置 前言:基于Mosquitto服务器已经搭建成功,大部分都是采用默认的是允许匿名用户登录模式,正式上线的系统需要进行用户认证. 1.用户参数说明 Mosquitto服务器 ...
- MQTT服务器搭建——Liunx安装mosquitto,并设置用户密码
一.安装 1.下载mosquitto安装包 地址:http://mosquitto.org/files/source/ 2.安装依赖包 yum install gcc gcc-c++ libstdc+ ...
- MQTT服务器搭建-mosquitto1.4.4安装指南
Mosquitto mosquitto是一款实现了 MQTT v3.1 协议的开源的消息代理服务软件. 其提供了非常轻量级的消息数据传输协议,采用发布/订阅模式进行工作,可用于物联设备.中间件.APP ...
- MQTT服务器搭建--Apollo
尊重原创,我是伸手党:https://blog.csdn.net/u012377333/article/details/68943416 1.Apollo下载 下载地址:http://activemq ...
随机推荐
- [工具分享]ClipX超级粘贴板,超级好用
1.背景 话说粘贴.复制是码农们的必备核心技能, 普通码农们当然已经熟练的掌握了普通的粘贴复制.... 但是,你不知道的是,牛逼的架构师已经会使用超级粘贴板了,功能非常强大 ............. ...
- SeaTunnel JDBC DB2 Sink Connector支持的工作原理,快来学习吧!
DB2是IBM的一款关系型数据库管理系统,JDBC DB2 Source Connector是一个用于通过JDBC读取外部数据源数据的连接器.Apache SeaTunnel如何支持JDBC DB2 ...
- JS Map对象与map方法
前言 最近遇到一个遍历的问题,查资料的过程中,发现有个 Map 对象,提供了很多方法可以轻松地获取我们想要的数据,之前只知道有 map ,没想到还有 Map ,是不是有点绕?不急,这两个东西都是虽然 ...
- SpringBoot 整合线程池
分为三步 启动类加 @EnableAsync 注解 在方法上加 @Async 注解 创建线程池配置类 1.启动类加 @EnableAsync 注解 @SpringBootApplication @En ...
- java判断文本文件编码格式
上篇文章需要读取当前java或者配置文件的编码格式,这里主要支持UTF-8.GBK.UTF-16.Unicode等 /** * 判断文件的编码格式 * @param fileName :file * ...
- 如何用C语言操作sqlite3,一文搞懂
sqlite3编程接口非常多,对于初学者来说,我们暂时只需要掌握常用的几个函数,其他函数自然就知道如何使用了. 数据库 本篇假设数据库为my.db,有数据表student. no name score ...
- 【CMake系列】10-cmake测试集成googletest与第三方库自动化构建
cmake测试,使用ctest 可能不能满足我们的需求,需要我们使用更为强大的第三方测试框架,如googletest,完成项目中的测试工作 本篇文章将第三方测试框架 googletest,引入,同时也 ...
- Ubuntu 安装 Docker Desktop
介绍 Docker 有两种版本:Docker Desktop 和 Docker Engine (也称作 Docker CE).Docker Desktop 是带图形界面的版本,非常适合需要在桌面环境中 ...
- 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之分布式追踪
概述 分布式追踪是一种跟踪应用程序请求流经不同服务(如前端.后端.数据库等)的过程.它是一个强大的工具,可以帮助您了解应用程序的工作原理并调试性能问题. Quickwit 是一个用于索引和搜索非结构化 ...
- TFC-Pretraining: 基于时间频率一致性对时间序列进行自监督对比预训练《Self-Supervised Contrastive Pre-Training for Time Series via Time-Frequency Consistency》(时间序列、时序表征、时频一致性、对比学习、自监督学习)
2023年11月10日,今天看一篇论文,现在17:34,说实话,想摆烂休息,不想看,可还是要看,拴Q. 论文:Self-Supervised Contrastive Pre-Training for ...