Не удается подключиться к Mosquitto через веб-сокеты

Я установил последнюю версию брокера 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 в качестве цели, и она подключается. Но с удаленной машины, скажем, моего ноутбука или другого сервера, веб-сокеты по-прежнему не работают.


person Eddie Huang    schedule 13.05.2015    source источник
comment
Как долго вы оставляли его, пытаясь подключиться? Вы получаете сообщение о тайм-ауте, если оставите его дольше?   -  person hardillb    schedule 13.05.2015
comment
@ Леон, да, я запустил sudo netstat -lnp| grep 1884, и он показал, что mosquitto прослушивает этот порт.   -  person Eddie Huang    schedule 13.05.2015
comment
@hardillb, я пытался подключиться около 5 или 6 минут, без ошибки тайм-аута. Я попытался прослушать события close и offline, обнаружил, что время от времени они отключаются, и немедленно попытался снова подключиться. Однако событие ошибки никогда не запускается.   -  person Eddie Huang    schedule 13.05.2015
comment
Правила брандмауэра на сервере?   -  person hardillb    schedule 13.05.2015


Ответы (1)


После консультации с поставщиком услуг VPS я уверен, что с моим кодом или брокером все в порядке. Как сказал @hardillb, это проблема с брандмауэром на сервере. Поставщик услуг заблокировал все HTTP-передачи, поэтому клиент не может установить соединение через веб-сокет с сервером.

person Eddie Huang    schedule 15.05.2015