Я использую Context Broker, чтобы считывать измерения с моих датчиков.
До сих пор мне приходилось обновлять веб-страницу моего приложения, чтобы прочитать последние меры.
Как я могу обновить показатели на моей странице, не обновляя ее?
Есть ли способ использовать запрос получения curl с опросом или веб-сокетами?
Или есть операция, которую обеспечивает Context Broker для асинхронного обновления новых показателей, отправляемых моим датчиком?
Кажется, довольно легко реализовать то, что вы просите …
Как вы получаете данные от Ориона в первую очередь?
С GET /v2/entities
возможно.
Просто запрограммируйте вызов Orion в функции JavaScript (немного Ajax), запускаемой setInterval, а затем измените значения ваших полей на вашей веб-странице. Правильно?
К сожалению, я думаю, что в сообществе Fiware такого нет. Однако я думаю, что вы могли бы реализовать это поведение без боли, начиная с этого:
Орион и Механизм Сискинг
Orion Context Broker использует механизм подписки, который хорошо объяснен в этот раздел официальной документации.
Начиная с этого вы можете подписать ваше приложение на конкретные изменения в контекстах вашего устройства, а затем получать новые данные каждый раз, когда устройства отправляют новую меру.
Однако этого недостаточно для получения уведомлений в вашем веб-приложении со стороны клиента. Для этого вы должны добавить свой бэкэнд приложения, а затем внедрить асинхронный механизм для уведомления клиента от вашего бэкэнда, используя, например, WebSockets как ты правильно сказал.
NGSI Proxy
В другой руке есть этот компонент из сообщества FIWARE, называемый NGSI Proxy, который реализует аналогичную логику для вас и может быть вам полезен. Признаюсь, что в прошлом я использовал его только косвенно с помощью виджетов Wirecloud, и я не уверен, что это решение вашей проблемы.
Извините, если это не может быть достаточно помочь.
Orion реализовал поддержку websocket некоторое время назад (см. Это вопрос) но это было как экспериментальное подтверждение концепции, которое в конце концов не попало в ветку главного хранилища (по крайней мере, до настоящего момента;)
Вы могли бы взглянуть, чтобы увидеть, подходит ли это вашей проблеме. Однако альтернатива на основе Ajax, как указывает @kzangeli в своих ответах, кажется априори более выполнимой.