0

目前我正在使用乐山定期从设备接收日志消息进行概念验证。我们发现观察请求是采用这种方法的最佳方式。所以暂时,由于我们还没有自定义对象(Wakama 客户端还没有准备好),在服务器端当客户端注册时,我在 LeshanClientExample 中观察到 Device 上的资源 15。下面是 LeshanServer.java 中的 Observe 代码:

 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() 中)。那是从中检索更新的正确位置吗?我试图找出代码库中检索更新内容的正确位置?您的帮助将不胜感激。

谢谢

4

1 回答 1

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) {}

});
于 2015-10-26T21:39:37.620 回答