首页/网络/工控与物联网速查/CoAP Observe资源订阅机制
物联网协议60 条

CoAP Observe资源订阅机制

CoAP 的观察机制让客户端用带观察选项的 GET 订阅资源,服务端在资源变化时主动推送通知。通知带递增序号用于判断新旧,取消订阅只需在收到通知后回复复位报文。

工控与物联网速查网络更新于 2026-10-17
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​‌‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

用一次 GET 换来的推送

在普通 GET 请求里加上观察选项,服务端把客户端登记为订阅者,此后资源每次变化都主动发送通知,通知里同样带观察选项与一个递增序号。客户端比较序号就能判断这条通知是新数据还是乱序到达的旧数据。取消订阅的方式是对最近一次通知回复复位报文,服务端据此移除订阅关系。

基本信息

登记方式GET 请求携带观察选项,取值 0 表示登记,1 表示取消
通知形式响应报文同样携带观察选项与递增序号
序号作用识别乱序与过期通知,新通知的序号应更新于旧值
取消方式对最近一次通知回复复位报文
中间设备部分缓存代理不支持观察,需要确认整条链路的能力

适用与不适用

数据特征是否适合观察原因
状态变化不频繁适合有变化才推送,省流量也省电
高频采样数据不适合通知频率高,反而接近持续推送
需要历史序列不适合观察只给最新值,历史需另存
跨公网长链路谨慎链路中断后订阅状态需要重新确认

典型使用场景

  • 设备状态监控:只在状态变化时推送,避免轮询开销
  • 配置变更生效:资源变化即通知管理端,缩短生效确认时间
  • 报警上报:状态位翻转即推送,适合低功耗设备
  • 资源发现配合:先发现设备资源,再按需建立观察关系
观察关系依赖链路可达性:长时间没有通知时,客户端应主动用一次普通 GET 重新确认资源状态并重新登记。
取消订阅的通知可能丢失,服务端会残留无效订阅关系并继续发送通知,服务端需要设置订阅数量上限与老化策略。

易错点

  • 忽略观察序号:乱序到达的旧通知覆盖新值,界面上出现数据回跳
  • 用轮询替代观察:设备规模增大后轮询流量与耗电都不可接受
  • 以为取消订阅一定生效:复位报文丢失时会残留订阅关系
  • 经过不支持观察的中间代理:客户端以为已订阅,实际收不到任何通知

数据来源与参考

  • RFC 7641 CoAP 资源观察
  • RFC 7252 CoAP 协议

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/ics/coap-observe-subscription.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​​​​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​‌​‌​‌‌‌​​‌​​‌‌‌​‌‌​​‌‌​​‌​‌​​‌​‌‌​‌​‌‌‌​​‌‌​‌‌‌​‌​‌​‌‌​​​‌​​‌‌‌​​‌‌​‌‌​​​‌‌​‌‌‌​​‌​​‌‌​‌​​‌​‌‌‌​​​​​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​