我正在使用 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/