#java #rest #api #jax-rs
#java #rest #API #jax-rs
Вопрос:
У меня есть план автоматизации процесса с помощью REST api и нескольких интеллектуальных устройств. То, что я пытаюсь сделать, заключается в следующем. У меня есть 4 устройства, каждое из которых выполняет серию действий для выполнения своей задачи. (практически я собираюсь включить 4 светодиода в определенной серии в зависимости от устройства). В настоящее время я эмулирую это на Java (поскольку у меня нет под рукой устройств)
Итак, например, допустим, что устройство № 1 сначала загорается красным светодиодом в течение 10 секунд, после этого устройство № 2 должно загораться в течение 10 секунд и т.д. Это задача. Это делается автоматически и навсегда, пока я не завершу работу программы.
Я разработал REST API с использованием JAVA и библиотеки JAX-RS, где я указываю устройства и их информацию (например, имя устройства, текущее состояние, например. Включение / выключение желтого светодиода и т.д.).
Чего я не понимаю, так это как я собираюсь заставить программу, которая у меня сейчас есть, реагировать на информацию из API. Как я могу заставить свою программу получать уведомления при изменении значения в информации API?
Как я могу заставить устройство 2 опрашивать API, пока оно не получит ответ для запуска своего действия? Или сделать так, чтобы оно запускало действие, если я вручную изменяю значение в данных сервера? Например, если желтый индикатор горит, а я захожу в базу данных сервера и выключаю его, как мое приложение получит уведомление и изменит состояние имитируемого индикатора?
Комментарии:
1. «Как я могу заставить устройство 2 опрашивать API» — Вероятно, лучше использовать публикацию / подписку, чем опрос, если ваша архитектура позволяет это
2. @cricket_007 Мне не обязательно проводить опрос, я просто хочу, чтобы клиент (приложение) дождался изменения состояния, чтобы он мог запустить следующую задачу
3. Правильно, и, как я уже сказал, вы бы «опубликовали» событие обновления, на которое вы можете «подписаться» на событие записи в базу данных и выполнять оттуда любые другие действия
4. Хм, я понятия не имею, как я мог бы опубликовать из REST, думаю, я должен сделать свою домашнюю работу, хе-хе. Спасибо за ввод!
Ответ №1:
Поскольку вы используете HTTP, наиболее подходящим решением является использование веб-сокетов. Вы можете использовать их для полнодуплексной связи. Когда вы получаете входные данные с одного устройства, вы можете обработать их и сообщить другим устройствам. Обратите внимание, что это не подходит для большой клиентской базы.