LWM2M客户端如何处理存在重叠但非等效的观测请求?
LWM2M重叠资源观测的处理方案
首先明确:当前所有LWM2M规范版本都没对资源路径重叠的观测请求给出强制要求,所以客户端处理有灵活度,但得盯着几个核心原则来:
可选处理方式
- 允许同时存在独立观测:最简单的实现就是分别维护
/9、/9/0、/9/0/7各自的观测实例。对应路径的资源变了,就单独推对应通知。好处是完全匹配服务器的观测意图,不用额外做逻辑判断,不容易出错。 - 合并重叠观测(优化可选):要是想减少冗余通知,可以合并层级高的观测:
- 已经观测
/9了,再收到/9/0或/9/0/7的请求,要么返回4.06 Not Acceptable拒绝新请求,要么把新观测绑到已有/9的观测上,只要/9下任何资源变,就触发所有相关观测的通知。 - 已经观测
/9/0了,再收到/9的请求,同理要么拒绝,要么把现有观测的覆盖范围扩展到整个/9对象。
- 已经观测
- 保持行为一致:不管选哪种方式,同一服务器的重叠请求处理逻辑必须统一,一会儿允许一会儿拒绝的话,服务器端状态会乱套。
要注意的细节
- 通知内容得准:如果合并观测,推的通知得覆盖所有被观测的路径。比如合并
/9和/9/0后,/9/0/7变了,通知里得包含/9的完整对象数据(至少得有/9/0的实例数据),满足两个观测的需求。 - 错误码别瞎用:要是拒绝请求,得用LWM2M规范里定义的错误码,别自定义,服务器才能正确识别。
内容的提问来源于stack exchange,提问作者Bryan Green
相关产品推荐
相关产品推荐

