У меня есть следующая проблема:
Я создал брокер mqtt на моем сервере localhost, это код:
const settings = {
port: 1883
};
const server = new mosca.Server(settings);
let client
server.on("ready", function() {
console.log("Mosca server is running on port 1883");
client = mqtt.connect("mqtt://localhost:1883");
client.on("connect", function() {
client.subscribe("locateUser");
});
client.on("message", function(topic, message) {
context = message.toString();
console.log(context);
});
});
Когда я пытаюсь подключиться к брокеру с localhost всеработает правильно и сообщения отправляются. Но я хотел бы подключиться к брокеру из собственного приложения, и соединение не может быть установлено. Это код для подключения:
mqtt
.createClient({
uri: "mqtt://XXX.XXX.X.XX:1883"
})
.then(client => {
console.log(client);
this.client = client;
client.on("closed", function() {
console.log("mqtt.event.closed");
});
client.on("error", function(msg) {
console.log("mqtt.event.error", msg);
});
client.on("message", function(msg) {
console.log("mqtt.event.message", msg);
});
client.on("connect", function() {
console.log("connected");
client.subscribe("/data", 0);
client.publish("/data", "test", 0, false);
});
client.connect();
})
.catch(function(err) {
console.log(err, 60);
});
Я получаю сообщение об ошибке:
[TypeError: null is not an object (evaluating 'matches[2]')] 60
Во-первых, у меня проблема с неправильным IP-адресом локальной сети или чем-то в этом роде. Но у меня есть maid express сервер api rest и протестировано соединение с rest api - он работает правильно, и я вижу объект, отправленный мне из запроса get. У вас есть идеи, почему он не работает?