javascript - 如何使用 coap.registerOption 注册新选项

标签 javascript node.js coap

我正在使用 node-coap 来将数据发送到 coap 服务器,我需要在数据包中使用自定义选项,因此我运行以下代码:

var req = {
 hostname:"localhost",
 method:"PUT",
 pathname:"create1",
}
    var coapReq = coap.request(req)
    coap.registerOption('newOption',toBinary,toString)
    coapReq.setOption('newOption',b.from('Hello World'))
    coapReq.end()

函数toBinary和toString定义如下:

function toBinary(data){
    return b.from(data)
}

function toString(data){
    return data.toString()
}

这段代码不起作用。使用registerOption方法的正确方法是什么?

最佳答案

在 node-coap 自述文件中,setOption 的示例使用自定义选项的数字名称。

var coap = require('coap')

function toBinary(text){
  return new Buffer(text);
}

function toString(data){
  return data.toString()
}

coap.registerOption("555", toBinary, toString)

server = coap.createServer()

server.on('request', function(req, res) {
  console.log(req.options);
  res.end()
})

// the default CoAP port is 5683
server.listen(function() {
  var req = {
    hostname:"localhost",
    method:"PUT",
    pathname:"create1",
  }
  var coapReq = coap.request(req)
  coapReq.setOption('555', "Hello World")

  coapReq.on('response', function(res) {
    res.pipe(process.stdout)
    res.on('end', function() {
      process.exit(0)
    })
  })

  coapReq.end()
})

选项是:

[ { name: 'Uri-Path', value: <Buffer 63 72 65 61 74 65 31> },
{ name: '555', value: 'Hello World' } ]

不可能传递字母选项名称,因为 node-coap 使用 coap-packet 模块,其中选项名称被解析为整数:

https://github.com/mcollina/coap-packet/blob/master/index.js#L342

我建议您在 node-coap github 存储库中创建一个问题/PR,以便在 README 中对此进行更清晰的解释。

关于javascript - 如何使用 coap.registerOption 注册新选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44523667/

相关文章:

c - 在 libcoap coap 服务器 GET 响应处理程序中如何访问 URI 的查询添加项?

javascript - 如何摆脱多线跨度线之间的空间?

javascript - 如何避免显式构造反模式并仍然保持缩进/回调较低

javascript - 在 Angular ui 网格中使用外部过滤两次触发

json - NodeJS HttpGet 到带有 JSON 响应的 URL

node.js - Twilio statusCallback 实现遇到麻烦

javascript - 构造函数中的 DRY JavaScript 继承

node.js - 如何阻止nodejs上的图像盗链?

MQTT 和 CoAP 传感器和执行器

javascript - Nodejs + 发送后无法设置 header