Как получить обновленный контент на ресурсе Observed в Leshan?
В настоящее время я работаю над проверкой концепции, используя Leshan для регулярного получения сообщений журнала от устройств. Мы обнаружили, что запрос Observe является наилучшим способом реализации этого подхода. Поэтому временно, поскольку у нас пока нет пользовательского объекта (клиент Wakama еще не готов), на стороне сервера, когда клиент регистрируется, я наблюдаю ресурс 15 на устройстве в LeshanClientExample. Вот код наблюдения в LeshanServer.java:
this.clientRegistry.addListener(new ClientRegistryListener() {
....
@Override
public void registered(final Client client) {
// TODO observe the client when it is registered.
observeResource(client);
}
....
private void observeResource(final Client client){
ObserveRequest request = new ObserveRequest("/3/0/15");
LwM2mResponse cResponse = this.send(client, request);
}
Далее я хочу фиксировать изменения каждый раз, когда происходит изменение ресурса, и записывать их в базу данных. Я вижу это в
org.eclipse.leshan.client.californium.impl.ObjectResource
Я получаю контент, который был обновлен (в handleGET()). Это правильное место для получения обновлений? Я пытаюсь выяснить, где в базе кода находится правильное место для получения обновленного контента? Ваша помощь будет высоко оценена.
Спасибо
1 ответ
Как предлагается в другом сообщении в блоге. Есть 2 способа получить уведомление о наблюдении.
// listen all observation via the ObservationRegistry
server.getObservationRegistry().addListener(new ObservationRegistryListener() {
@Override
public void newValue(Observation observation, LwM2mNode value) {}
@Override
public void cancelled(Observation observation) {}
@Override
public void newObservation(Observation observation) {}
});
// listen a particular observe request (recently added in master)
ObserveRequest request = new ObserveRequest("/3/0/13");
ObserveResponse response = server.send(client, request, TIMEOUT);
response.getObservation().addListener(new ObservationListener() {
@Override
public void newValue(Observation observation, LwM2mNode value) {}
@Override
public void cancelled(Observation observation) {}
});