【问题标题】:Mqtt subscribe message while continuous publishing to topicMqtt 订阅消息,同时持续发布到主题
【发布时间】:2015-05-18 10:14:49
【问题描述】:

我正在尝试将消息发布到主题“New/Topic”并从另一个主题“OK/Topic”订阅消息 但它不起作用以下是我的代码:

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("OK/Topic")

def on_message(client, userdata, msg):
    print(" Topic : "+str(msg.topic)+"  and Message is : "+str(msg.payload))

def on_subscribe(client, userdata,mid, granted_qos):
    print "userdata : " +str(userdata)


strs="my-message-to-publish"
mqttc = mqtt.Client("Python-MQTT-Pub-Sub")
mqttc.on_connect = on_connect
mqttc.on_message = on_message
mqttc.on_subscribe = on_subscribe
mqttc.connect("IP", PORT, 60)

while True:
    mqttc.publish("New/Topic",str(strs))
    print "publish message " + str(strs)
    time.sleep(1)

mqttc.loop_forever()

任何人都知道如何在持续发布主题的同时订阅消息。

提前致谢。

【问题讨论】:

    标签: python mqtt


    【解决方案1】:

    您的 while 循环永远不会终止,因此代码永远不会到达 mqttc.loop_start() 函数。这就是导致您看到的问题的原因。

    如果您将 mqttc.loop_start 调用移到 while 循环之前,它应该会做得更好,因为它将启动后台线程来处理传入的消息(并实际发送已发布的消息)

    【讨论】:

    • 感谢 hardlib.. 我想念 mqttc.loop_forever() ,现在我已经更新了主帖。
    • 你不想要loop_forever,你想要loop_start
    【解决方案2】:

    以下代码将完美运行:

    while True:
            client.connect(broker_address, port)
            message = 'msg'      
            client.publish(topic, message)
            time.sleep(1)
    client.loop_forever()`
    

    【讨论】:

      猜你喜欢
      • 2018-07-23
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      相关资源
      最近更新 更多