上面代码,不使用多线程,而是改成在两个方法中订阅不同的topic
时间: 2023-05-30 22:06:12 浏览: 48
把代码分成两个方法,分别订阅不同的topic:
```python
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("Connected with result code "+str(rc))
client.subscribe("topic1")
def on_message1(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
def on_message2(client, userdata, msg):
print(msg.topic+" "+str(msg.payload))
client1 = mqtt.Client()
client1.on_connect = on_connect
client1.on_message = on_message1
client1.connect("localhost", 1883, 60)
client2 = mqtt.Client()
client2.on_connect = on_connect
client2.on_message = on_message2
client2.connect("localhost", 1883, 60)
client1.loop_forever()
client2.loop_forever()
```
其中,`on_message1`方法订阅了`topic1`,`on_message2`方法可以订阅其他topic。在创建`client1`和`client2`时,分别将不同的方法分配给`on_message`属性。最后,分别调用两个客户端的`loop_forever`方法,以保持连接并处理消息。