node-coap模块中json的示例代码缺少了
.setHeader("Accept","application/json")
,添加后即可正常运行
结合注释理解代码
const coap = require('coap') // or coap
, bl = require('bl')
//创建服务器
coap.createServer(function(req, res) {
if (req.headers['Accept'] != 'application/json') {
res.code = '4.06'
return res.end()
}
//得到请求数据并解析
var data = req.url.split('/')
console.log(data[1] + ':' + data[2] + '\n')
//设置响应的格式为json
res.setOption('Content-Format', 'application/json')
//发送响应
res.end(JSON.stringify({ cmd: "shutdown" }))
}).listen(function() {
//启动监听服务后创建请求
coap
.request({
pathname: '/temperature/32',//请求内容
options: {
}
})
.setHeader("Accept","application/json")//设置请求头为json
.on('response', function(res) {
//打印响应代号
console.log('response code', res.code)
if (res.code !== '2.05')
return process.exit(1)
res.pipe(bl(function(err, data) {
//json解码,输出响应cmd字段对应的值
var json = JSON.parse(data)
console.log(json.cmd)
process.exit(0)
}))
})
.end()
})
测试
$ node son
->temperature:32
response code 2.05
shutdown