node-coap入门(二)——json

753 查看

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