Mosquitto broker version

а зачем вам нужен вебсокет на localhost?

чтобы работало вот это: http://contactless.ru/wiki/index.php/Защита_паролем

Почему mosquitto? Потому что paho в моем случае работает значительно медленнее. Первое подключение (MQTTAsync.c) идет с таймаутом 10 мс, последующие - через 1000 мс. При невозможности выделения потока попытки повторяются через 100 мс. Быстрее получается при динамическом создании асинхронного клиента перед каждым подключением. В этом случае средний таймаут получается 140-260 мс. И это под линуксом. Поэтому забил на эту библиотеку.

Хм, а что у вас за такая задача, что нужно часто подключаться к брокеру?

Задача, как задача. Удаленный мониторинг и управление исполнительными устройствами. Устройства подключены к различным контроллерам. Контроллеров несколько и разных (от WB до Moxa) с разными интерфейсами (mqtt, modbus rtu, modbus tcp). Все это хозяйство подключено к серверу (доступа данных или серверу приложений - еще не придумал название:). Многопользовательский доступ через интернет.

понятно, спасибо.
Я только не очень понимаю, зачем от брокера постоянно отключаться и подключаться заново? Как я понял, именно в этом месте случаются тормоза?

Это прототип. Чтобы не устраивать зоопарк, со всеми типами контроллеров работаю однотипно: клиент подключается к серверу, отправляет запрос, получает ответ и отключается. С интерфейсом modbus это самое простое решение, и то пришлось очередь организовывать. С mqtt, конечно, можно поступить иначе, сейчас над этим работаю.

вы избавились от зоопарка но приобретёте себе еще больший геморрой… первую проблему вы уже познали :). Работать с протоколом лучше так как он сам это предусматривает. Создайте лучше абстракцию в виде драйвера протокола и реализуйте специфичные каждому конкретному протоколу вещи в нем и будет вам счастье :slight_smile:

Хм… это не первая. Да и не проблема вовсе. Целевая платформа - linux. Там все отлично.

Проверил клиентскую библиотеку 1.4.9 с брокером 1.4.8 под Windows. Все работает отлично, как и в линуксе.
Так что, Евгений, если обновите mosquitto в WB5, это будет неплохо. Хотя и не горит.

Вышла версия 1.4.9.

Вроде и с предыдущей всё неплохо.

Сергей, если вам это для работы нужно, то мы можем собрать вам пакет в рамках платной техподдержки. Просто задача у вас уж очень специфическая.

Спасибо, поговорю с руководством. Но на линуксе проблем нет, могут и отказаться.

Вышла версия 1.5.7.
После версии 1.4.7 сделано много исправлений дефектов и утечек памяти, также была повышена производительность работы через websockets в 1.4.13.

Пора обновиться? :slight_smile:

Кажется в репозитории 1.4.15. Обновиться планируем, да.

Из-за пробелов в именах топиков невозможно определить начало payload, опция -F у mosquitto_sub появилась только с версии 1.5. Уже год прошёл. Когда планируете обновиться?

Точный сроков нет. Вы можете помочь, если портируете и проверите нужные изменения и пришлёте pull-request. Код в github/contactless/contrib

Патчить так внешние зависимости вообще плохая идея. Оригинальная версия всегда будет обновляться, и кто-то постоянно должен это актуализировать. Можете здесь применить такой же подход, как с zigbee2mqtt? Чтобы можно было ставить оригинальный пакет mosquitto последней версии и рядом некий ваш адаптер?

2 лайка

согласен, плохая

Ого, а проблема таки хроническая.
В чём вообще заключается патч москиты в двух словах? Может, проще самому ошкурить, чем годами взывать об апдейте?..
Не сочтите за претензию, вопрос задается прямо.