Я пытаюсь подключиться к локальному брокеру mosqitto mqqt через веб-сокеты и клиент paho javascript. Однако при использовании примера, показанного на https://www.eclipse.org/paho/clients/js/, происходит сбой моего сетевого подключения. В консоли chrome или ie я обнаружил проблему: соединение устанавливается снова и снова (функция onConnect вызывается несколько раз в секунду).
client.connect({onSuccess:onConnect});
// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("Connection was successful");
client.subscribe("World");
message = new Paho.MQTT.Message("Hello");
message.destinationName = "World";
client.send(message);
}
На брокере я вижу клиента, подключающегося:
New client connected from 192.168.1.3 as web_78 (c1, k60, u'user123').
Но сообщение не передается клиентом. Когда я закрываю браузер, я вижу на клиенте:
Socket error on client web_78, disconnecting.
То же самое происходит, когда я пытаюсь использовать другой пример кода, такой как этот: https://jpmens.net/2014/07/03/the-mosquitto-mqtt-broker-gets-websockets-support/
Я использую mosquitto версии 1.5 на своем Raspberry Pi и не имею ни малейшего представления, как мне это запустить. Может быть, проблема в сервере москит, а не клиент?
Это часть моего mosquitto.conf, где я определяю порты
listener 9001
protocol websockets
Другие клиенты могут подключаться (например, через Paho Python) и MQTT (без веб-сокетов).
pi@raspberrypi ~ $ sudo mosquitto -c /etc/mosquitto/mosquitto.conf
1530009485: mosquitto version 1.5 starting
1530009485: Config loaded from /etc/mosquitto/mosquitto.conf.
1530009485: Opening websockets listen socket on port 9001.
1530009485: Opening ipv4 listen socket on port 1883.
1530009485: Opening ipv6 listen socket on port 1883.
1530009485: New connection from 192.168.1.51 on port 1883.
1530009485: New client connected from 192.168.1.51 as DVES_9CE05F (c1, k15, u'johann').
Любая помощь будет высоко оценена!
РЕДАКТИРОВАТЬ Обновление:
Проблема должна быть на моем сервере, так как я могу получить доступ к публичному брокеру, такому как HiveMQ.