2016-06-15 10 views
0

私はmqttとpythonシステムに新しく、私はpythonで重い計算を行い、その結果をnode.jsサーバーに送信しようとしています。pythonとnode.jsの間のmqttは1つのメッセージしか送信しません

node.jsスクリプトを実行するたびに、結果が1つだけ取得されます。

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:ここに私の簡単な コードです

私が送信するまでのpythonから連続応答を取得するために変更する必要がどのような
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()); 
}); 

メッセージ "停止"?

答えて

0

制御と出力の両方で同じトピックを使用しています。

だからStartでメッセージを受信した後、あなたのコードがmain/appトピックに1を発行し、これはすぐにon_messageでPythonコードによって受信され、message

1に設定しますので、ループ messageラウンド次回はそう 1ですいずれのif文も一致しません。

+0

ありがとうございました!私は値を送るために別の話題を作りました。今では自分のプログラムの流れをコントロールすることができます。 – macvg

関連する問題