Публикация-подписка в стиле MQTT с помощью Python и WebSockets?

Я работаю над проектом, которому нужна структура для обработки соединений pub/sub между веб-страницей и Python.

Я уже использовал mosquitto (реализация MQTT с открытым исходным кодом), и это сработало, но серверу нужен модифицированный модуль Apache для перенаправления подключений WebSocket к брокеру.

Прямо сейчас я смотрю на Tornado, но он не соответствует моим требованиям. Мне нужно решение для следующего:

  • Веб-страница подключается к серверу Python или какому-либо брокеру и подписывается на тему, которая получает данные, связанные с этой темой.
  • Каждый раз, когда у Python есть данные, связанные с этой темой (скажем, каждые 10 секунд), данные отправляются конкретному клиенту (или клиентам), которые подписались на эту тему.

заранее спасибо


person Elisiário Couto    schedule 19.07.2013    source источник


Ответы (4)


Вы можете попробовать брокера HiveMQ * MQTT вместо mosquitto, так как он имеет встроенную поддержку MQTT через веб-сокет.

person hardillb    schedule 09.12.2013

Autobahn обеспечивает публикацию и подписку (и RPC) через WebSocket через WAMP и поставляется с клиентом для JS (помимо других) и Python/Twisted для сервера.

Вот полный пример.

Раскрытие информации: я оригинальный автор Autobahn и работаю в Tavendo.

person oberstet    schedule 11.12.2013

websockify предоставляет веб-сокеты для tcp-прокси, которые вы можете поставить перед mosquitto. Вам придется запускать его на порту, отличном от 80, если у вас уже есть веб-сервер, конечно, но это проще, чем иметь дело с пользовательскими модулями apache/lighttpd.

person ralight    schedule 11.12.2013

Грязный код, работающий на сервере торнадо MQTT/Websocket, вещающий клиентам, когда получен mqtt "status/#"

https://github.com/Domosys-ORG/domosys_org/

видеть :

  • bin/tornado_websocket.py
  • domosys_web/domosys_web/mqtt.py
  • domsys_web/static/js/ws.js

Клиенты на django начинались с gunicorn, на ngynx

person s4mdf0o1    schedule 09.12.2013