CoAP客户端将请求发送给代理,由代理转发请求给服务器可以通过设定Proxy-Uri或Proxy-Scheme选项来实现。
http://mp.blog.csdn.net/postedit/79161280
mingdu.zheng at gmail dot com
使用Proxy-Uri
Proxy-Uri选项存储原始服务器的完整的URI,例如
Proxy-Uri: http://api.heclouds.com/devices/100801/datapoints?type=3
支持代理功能的服务器接收到请求后,首先检查是否有Proxy-Uri选项,如果有Proxy-Uri选项,那么会忽略Uri-Host、Uri-Port、Uri-Path和Uri-Query这四个选项,所以设置了Proxy-Uri选项就没有必要设置Uri-* 选项了。
如果是CoAP-CoAP代理服务器接收到请求后会将Proxy-Uri分解成Uri-* 选项再转发给原始服务器。如果是跨协议代理服务器,例如CoAP-HTTP代理服务器,那么代理服务器使用Proxy-Uri值作为请求的URI。
使用Proxy-Scheme
为了简化客户端,还可以通过设置Proxy-Scheme来指定原始服务器的URI。如果设定了Proxy-Scheme选项,那么代理服务首先使用Uri-Host、Uri-Port、Uri-Path和Uri-Query这四个选项合成完整的URI,然后将URI最前面的Scheme用Proxy-Scheme的值来代替,最终得到的URI就是原始服务器的URI。例如
Uri-Host:api.heclouds.com
Uri-Path:devices
Uri-Path:100801
Uri-Path:datapoints
Uri-Query:type=3
Uri-Scheme: https
这几个选项合成的URI:
coap://api.heclouds.com/devices/100801/datapoints?type=3
URI第一个冒号前面的 coap 就是URI的Scheme,使用Proxy-Scheme的值代替 coap ,得到原始服务器的URI:
https://api.heclouds.com/devices/100801/datapoints?type=3
Proxy-Uri vs Proxy-Scheme
使用Proxy-Uri或者Proxy-Scheme都可以设定原始服务器URI,不需要两个选项一起用。
Proxy-Scheme比较简单,只需要客户端在原先设定了Uri-* 选项的基础上追加一个Proxy-Scheme选项就可以了。但是Proxy-Scheme只是替换Scheme的部分(即URI最前面的的 coap ),没有办法附加其他的例如用户名、密码等信息。
Proxy-Uri选项的值是完整的原始服务器URI,可以包含任何URI允许的内容,例如用户名、密码等。