Aller au contenu principal

5. Intermédiaires (Intermediaries)

Un client peut être intéressé par une ressource dans l'espace de noms d'un serveur qui est atteint via une chaîne d'un ou plusieurs intermédiaires CoAP. Dans ce cas, le client enregistre son intérêt auprès du premier intermédiaire vers le serveur, agissant comme s'il communiquait avec le serveur lui-même, comme spécifié à la section 3. Il incombe à cet intermédiaire de fournir au client une représentation actuelle de la ressource cible et de maintenir cette représentation à jour lors des changements d'état de la ressource, comme spécifié à la section 4.

Pour effectuer cette tâche, l'intermédiaire DEVRAIT utiliser le protocole spécifié dans ce document, en prenant le rôle du client et en enregistrant son propre intérêt pour la ressource cible auprès du saut suivant vers le serveur. Si la réponse renvoyée par le saut suivant n'inclut pas d'option Observe, l'intermédiaire PEUT recourir à l'interrogation du saut suivant ou PEUT lui-même renvoyer une réponse sans option Observe.

La communication entre chaque paire de sauts est indépendante ; chaque saut dans le rôle de serveur DOIT déterminer individuellement combien de notifications envoyer, de quel type de message, et ainsi de suite. Chaque saut DOIT générer ses propres valeurs pour l'option Observe dans les notifications et DOIT définir la valeur de l'option Max-Age en fonction de l'âge de la représentation locale actuelle.

Si deux clients ou plus ont enregistré leur intérêt pour une ressource auprès d'un intermédiaire, l'intermédiaire DOIT s'enregistrer une seule fois auprès du saut suivant et diffuser les notifications qu'il reçoit à tous les clients enregistrés. Cela dispense le saut suivant d'envoyer les mêmes notifications plusieurs fois et permet ainsi l'évolutivité.

Un intermédiaire n'est pas tenu d'agir au nom d'un client pour observer une ressource ; un intermédiaire PEUT observer une ressource, par exemple, simplement pour maintenir son propre cache à jour.

Voir l'annexe A.2 pour des exemples.