跳到主要内容

5. 中介 (Intermediaries)

client 可能对某个 server namespace 中的 resource 感兴趣, 而该 server 需要通过一个或多个 CoAP intermediaries 组成的链到达. 在这种情况下, client 按 Section 3 的规定, 向通往 server 方向上的第一个 intermediary 注册其 interest, 行为如同直接与 server 通信. 该 intermediary 的任务是向 client 提供 target resource 的 current representation, 并在 resource state 变化时按 Section 4 的规定保持该 representation 更新.

为执行该任务, intermediary SHOULD 使用本文档规定的协议, 扮演 client 的角色, 并向通往 server 的 next hop 注册其自身对 target resource 的 interest. 如果 next hop 返回的 response 不包含 Observe Option, intermediary MAY 转而轮询 next hop, 或者 MAY 自身返回不带 Observe Option 的 response.

每对 hops 之间的通信都是独立的; 扮演 server role 的每个 hop MUST 独立确定要发送多少 notifications, 使用哪种 message type, 等等. 每个 hop MUST 为 notifications 中的 Observe Option 生成自己的 values, 并 MUST 根据 local current representation 的 age 设置 Max-Age Option 的值.

如果两个或更多 clients 已向 intermediary 注册其对某个 resource 的 interest, 则 intermediary MUST 仅向 next hop 注册自身一次, 并将其收到的 notifications 扇出给所有 registered clients. 这使 next hop 不必多次发送相同 notifications, 从而实现 scalability.

intermediary 不要求代表 client observe resource; 例如, intermediary MAY observe resource 只是为了保持自身 cache 最新.

示例见 Appendix A.2.