我正在尝试使用 MQTT 将消息从一个客户端发送到另一个客户端,两者都是发布者和订阅者。在第一个客户端的情况下,是一个 Raspberry,它运行 4 个进程,即程序的 4 次执行,在另一端,一个必须接收 4 个进程发布的所有消息的服务器。
订阅者部分:
mqttc = paho.Client() # mqttc object
# assign on_connect func
mqttc.on_connect = on_connect
# assign on_message func
mqttc.on_message = on_message
#mqttc.on_log = on_log
mqttc.tls_set(caPath, certfile=certPath, keyfile=keyPath, cert_reqs=ssl.CERT_REQUIRED,
tls_version=ssl.PROTOCOL_TLSv1_2, ciphers=None) # pass parameters
# connect to aws server
mqttc.connect(awshost, awsport, keepalive=60)
### *Till here* ###
sleep(3)
mqttc.loop_start() # Start the loop
ethName = getEthName()
ethMAC = getMAC(ethName)
macIdStr = ethMAC
mqttc.subscribe("home/AWS1", 1)
mqttc.subscribe("home/AWS2", 1)
while 1 == 1:
if connflag == True:
p = 1 # line that does nothing only waits
else:
print("waiting for connection...")
问题是在服务器中我只收到前 2 个客户端的消息。另外,4个客户端几乎同时发送消息,我不知道这是不是问题。