как подписаться на paho python так же, как javascript

У меня есть javascript с mqtt, и я написал paho python для подписки, но я не получаю никакого результата. Я хочу распечатать полученное сообщение

var mqtt = require('mqtt');
var client  = mqtt.connect('mqtt://127.0.0.1',{
  username: process.env.TOKEN
});

client.on('connect', function () {
  console.log('connected');
  client.subscribe('v1/devices/me/rpc/request/+')
});


client.on('message', function (topic, message) {
  console.log('request.topic: ' + topic);
  console.log('request.body: ' + message.toString());
  var requestId = topic.slice('v1/devices/me/rpc/request/'.length);
  //client acts as an echo service
  client.publish('v1/devices/me/rpc/response/' + requestId, message);

});

`

Соответствующий python для сабвуфера не публикуется, но я не получаю никакого результата

def on_connect(client, userdata, flags, rc):
  print("Connected with result code "+str(rc))
  client.subscribe('v1/devices/me/rpc/request/+')

def on_message(client, userdata, msg):

  print( msg.payload.decode())
  client.disconnect()

  client = mqtt.Client()
  client.username_pw_set("5vTGKxGAHzv5TbsW2Jv1")
  client.connect("127.0.0.1",1882,60)
  client.on_connect = on_connect
  client.on_message = on_message
  client.loop_forever()

Заранее спасибо


person Arun Pt    schedule 06.03.2018    source источник


Ответы (1)


Приложение NodeJS подключается к 1883 (порт по умолчанию), а Python подключается к 1882.

Оба набора кода подписываются на одну и ту же тему (v1/devices/me/rpc/request/+), поэтому код Python никогда не увидит ответа.

Отступы в коде Python неверны, поэтому соединение и бесконечный цикл являются частью обратного вызова on_message.

person hardillb    schedule 07.03.2018
comment
мой брокер сообщений работает на mosquitto -p 1882. Именно по этой причине я упоминаю номер порта python 1882. - person Arun Pt; 07.03.2018
comment
Да, но вы не установили этот номер порта в версии Javascript, поэтому он не будет подключаться. - person hardillb; 07.03.2018
comment
Я бегу в своем терминале mosquitto -p 1882. Но я вижу опубликованное сообщение java-скрипта. Я - это то, что я когда-либо отправлял со своего сервера, которое было получено JS и воспроизведено. Я также изменил python на 1883, но я не могу видеть содержание сообщения. Я запутался в имени пользователя : process.env.TOKEN , TOKEN — 5vTGKxGAHzv5TbsW2Jv1. Я преобразовал это в python client.username_pw_set (5vTGKxGAHzv5TbsW2Jv1), это правильно - person Arun Pt; 07.03.2018
comment
мое намерение состоит в том, чтобы отобразить подписанное сообщение либо в файл, либо в стандартный вывод. Я не знаком с JS. Если я смогу увидеть свое подписанное сообщение на стандартном выводе в Js, это тоже нормально - person Arun Pt; 07.03.2018
comment
может использовать console.info('мое сообщение %s', сообщение); для печати данных на стандартный вывод - person Arun Pt; 07.03.2018
comment
как я могу упомянуть о подключении к номеру порта 1882 в NodeJS в приведенной выше программе - person Arun Pt; 07.03.2018
comment
mqtt://127.0.0.1:1882 - person hardillb; 07.03.2018
comment
Теперь он подключен к моему брокеру сообщений. Нужна еще одна помощь. Я хочу увидеть сообщение на стандартном выводе, возможно ли это в Node JS. - person Arun Pt; 07.03.2018