XMPP для связи между машинами (M2M) - PullRequest
2 голосов
/ 15 января 2012

Я работаю над проектом услуг на основе определения местоположения, где у меня есть несколько датчиков, которым необходимо отправлять асинхронные показания на сервер, которые будут сопоставлять показания и генерировать результат. Также будет некоторый уровень связи между датчиками, и я заинтересован в использовании XMPP в качестве транспорта из-за его эффективного обмена сообщениями, характера в реальном времени и прохождения NAT.

Я надеюсь найти пример (Python или любой другой язык) XMPP-машин (M2M) сервисов, надеюсь, с использованием модели PubSub для асинхронной связи, а не RPC на основе опроса. Мне не удалось найти ни одного примера в Интернете или в книгах по XMPP, которые я видел, поскольку они, кажется, в основном сосредоточены на XMPP для взаимодействия с человеком, такого как чат, видео и т. Д.

Общие требования, с которыми я должен работать:


1. Несколько датчиков обмениваются данными друг с другом по XMPP


2. Асинхронная (PubSub) связь, подписка на интересующие сообщения


3. Надеюсь, написано на Python, но любой язык будет хорошей отправной точкой


4. Сервер сопоставляет данные со всех датчиков и генерирует результаты, которые могут быть доступны для подписчиков


5. Простая настройка / настройка благодаря обнаружению

Буду очень признателен за любые идеи о том, где искать, или за хорошую отправную точку.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 24 февраля 2012

XMPP для M2M звучит как хорошая идея.

О клиентах и ​​серверах см. http://xmpp.org/about-xmpp/technology-overview/pubsub/

В pubsub server выполняет практически всю тяжелую работу, и вам приходится реализовывать очень мало информации для клиентов. Но это зависит от того, что вы хотите делать с опубликованной информацией. Я не проверял клиентов, которые действительно что-то делают с опубликованной информацией.

2 голосов
/ 16 января 2012

Это очень хорошо подходит для XMPP-модели pubsub.

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

Любой пример, касающийся pubsub, можно легко применить. В XMPP вопрос о том, представляет ли JID (Jabber ID) пользователя машины, не имеет значения, а pubsub фактически не ориентирован на взаимодействие с человеком, в отличие, скажем, от многопользовательского чата.

Существует множество серверов XMPP, которые поддерживают pubsub. Я сам использовал Smack и OpenFire для аналогичных целей. Сервер менее важен для вас, так как любой готовый продукт, который поддерживает PubSub, сделает эту работу. Более важным является клиентская библиотека с поддержкой pubsub. Я знаю, что у Smack это есть, но это библиотека Java, а не python.

1 голос
/ 16 января 2012

Я ничего не знаю со всеми этими реквизитами, но вы можете использовать SleekXMPP, чтобы создать свой собственный. Это чистый Python и хорошо документированная библиотека XMPP. XMPP использовался для связи между компьютерами, что довольно приятно, потому что вы можете просто протестировать его из своего чата. Посмотрите, например, http://www.python.org/about/success/projectpipe/

Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...