Я установил последнюю версию брокера Mosquitto MQTT в Linux с поддержкой веб-сокетов и отредактировал файл конфигурации, чтобы добавить прослушиватель для веб-сокетов.
Я добавляю эти строки в файл конфигурации:
listener 1883
protocol mqtt
listener 1884
protocol websockets
когда я бегу
sudo /usr/local/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf
брокер запускается и одна из строк в консоли показывает
Opening websockets listen socket on port 1884.
и больше никаких ошибок. Я думаю, что прослушиватель веб-сокетов должен быть запущен и работать. Когда я тестирую брокера с помощью mqtt.js в Node.js, mqtt работает хорошо, но я не могу подключиться к брокеру через веб-сокеты.
JS-код:
var wsClient = mqtt.connect('ws://my.server.address:1884')
wsClient.on('connect', function(){
console.log('ws connected')
})
wsClient.on('error', function(err) {
console.log(err)
})
После запуска кода JS я не вижу ошибок или связанных сообщений. Брокер также не показывал никаких сообщений о соединении ws.
Странно то, что у меня все это работает в другой системе Ubuntu, но в этой системе Red Hat работает только соединение mqtt, ws, похоже, не работает, но не показывает ошибок с обеих сторон.
Что может быть причиной проблемы?
СПАСИБО.
ОБНОВЛЕНИЕ
Я попытался запустить программу на сервере, где находится брокер, используя ws://127.0.0.1:1884
в качестве цели, и она подключается. Но с удаленной машины, скажем, моего ноутбука или другого сервера, веб-сокеты по-прежнему не работают.
sudo netstat -lnp| grep 1884
, и он показал, что mosquitto прослушивает этот порт. - person Eddie Huang   schedule 13.05.2015close
иoffline
, обнаружил, что время от времени они отключаются, и немедленно попытался снова подключиться. Однако событие ошибки никогда не запускается. - person Eddie Huang   schedule 13.05.2015