python和node.js之间的mqtt只发送一条消息

时间:2016-06-15 22:54:34

标签: python node.js mqtt

我是mqtt和python系统的新手,我正在尝试在python中进行一些繁重的计算,并将结果发送到node.js服务器。

每次运行node.js脚本时,我只得到一个结果。这是我的简单 代码:

simple_mqtt.py

message = "Hello"
x=0
def add():
    global x
    x = x + 1

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

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

def on_message(client, userdata, msg):
    global message
    message = msg.payload

client = paho.Client()
client.on_connect = on_connect
client.on_message = on_message
client.on_publish = on_publish
client.connect("192.168.2.4", 1883)
client.loop_start()
while True:
    if message=="Start":
        print message
        add()
        client.publish("main/app",x)
    elif message=="Stop":
        print message
        client.publish("main/app","Ended")
    time.sleep(1)

和node.js:

var mqtt    = require('mqtt');
var client  = mqtt.connect('mqtt://192.168.2.4:1883');

client.on('connect', function () {
  client.subscribe('main/app');
  client.publish('main/app', 'Start');
});
client.on('message', function (topic, message) {
  // message is Buffer
  console.log(message.toString());
});

在发送消息“停止”之前,我必须修改以获得来自python的连续响应?

1 个答案:

答案 0 :(得分:0)

您对控件和输出使用相同的主题。

因此,在收到带有Start的消息后,您的代码会将1发布到main/app主题,并且on_message中的python代码立即收到此消息并设置{{1转到message

因此,下一轮循环1message,因此没有if语句匹配。