Веб-сокет клиента Paho не может найти mqtt - PullRequest
0 голосов
/ 22 января 2019

Мне дали проект, который использует клиент Paho / MQTT через Javascript для обновления веб-страницы.Проект запускает http-сервер через python на localhost: 8080, а затем, когда веб-страница загружается, сценарий main.js запускает клиент и запускает соединение, как показано ниже:

var client = new Paho.MQTT.Client("localhost",Number(8080),'0');
client.onConnectionLost = onConLost;
client.onMessageArrived = onMesArvd;

console.log("start connection...");
client.connect({onSuccess: onConnect});

Проблема заключается в том, чтопри попытке подключения появляется следующая ошибка, и метод onConnect не подключается, поскольку console.log не отображается:

WebSocket connection to 'ws://localhost:8080/mqtt' failed: Error during WebSocket handshake: Unexpected response code: 404

Код, выделенный красным цветом в файле paho-mqtt.js, приведен ниже:

new WebSocket(a, ["mqtt"])

Я попытался добавить файл mqtt в папку, из которой запускается localhost, но он только изменяет код ответа (301, если папка mqtt присутствует, 200, если файл).

Добавление файла mosquitto.conf, поставляемого с проектом:

pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/

log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

listener 1883

listener 8080
protocol websockets

Я заметил, что он находится не в той же папке, что и клиент paho / mqtt, но в ../dir2/setup/.

Я посмотрел вокруг, но я не видел никого с этой проблемой, поэтому любая помощь / руководство будет с благодарностью.Спасибо!

Ответы [ 2 ]

0 голосов
/ 28 января 2019

Спасибо Сантошу Баладжи за то, что он направил меня в правильном направлении.

Я считаю, что мне нужно установить mosquitto на пи, а затем изменить файл mosquitto.conf в директории установки mosquitto на тот, который предоставлен проектом. После установки и подтверждения моей конфигурации использовались js и Python, подключенные без проблем.

0 голосов
/ 24 января 2019

1) Порт 8080 занят другим процессом перед запуском mqtt. Попробуйте запустить свой комар с файла conf. Если при запуске произойдет ошибка, появится сообщение об ошибке.

mosquitto -c mosquitto.conf

2) Попробуйте изменить порт на 9001, так как это порт по умолчанию для использования веб-сокетов в mqtt

...