示例代码
import logging
import asyncio
from hbmqtt.broker import Broker
# 设置日志级别为DEBUG
logging.basicConfig(level=logging.DEBUG)
# 创建MQTT服务器
broker = Broker()
# 启动MQTT服务器
async def start_broker():
await broker.start()
# 停止MQTT服务器
async def stop_broker():
await broker.stop()
# 主函数
async def main():
# 启动MQTT服务器
await start_broker()
try:
# 保持主程序运行
while True:
await asyncio.sleep(1)
except KeyboardInterrupt:
# 捕捉键盘中断信号
pass
# 停止MQTT服务器
await stop_broker()
# 运行主程序
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
运行结果
"D:\Program Files (x86)\Python
310\python.exe" E:/文档/Projects/Pycharm/forklift/MQTT_SERVER.py
Traceback (most recent call last):
File "E:\文档\Projects\Pycharm\forklift\MQTT_SERVER.py", line 10, in <module>
from hbmqtt.broker import Broker
File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\broker.py", line 15, in <module>
from hbmqtt.session import Session
File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\session.py", line 8, in <module>
from hbmqtt.mqtt.publish import PublishPacket
File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\mqtt\__init__.py", line 5, in <module>
from hbmqtt.mqtt.packet import (
File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\mqtt\packet.py", line 8, in <module>
from hbmqtt.adapters import ReaderAdapter, WriterAdapter
File "D:\Program Files (x86)\Python310\lib\site-packages\hbmqtt\adapters.py", line 6, in <module>
from websockets.protocol import WebSocketCommonProtocol
ImportError: cannot import name 'WebSocketCommonProtocol'

文章描述了在使用hbmqtt和paho-mqtt库尝试建立MQTT服务器和客户端连接时遇到的问题。首先,因websockets版本过高导致导入错误,解决方法是降级websockets版本。接着,hbmqtt中缺少listeners配置项,解决方案是提供包含listeners的有效配置。最后,通过修改paho-mqtt客户端的连接方式解决了连接失败的问题。
最低0.47元/天 解锁文章
397





