2017-06-13 3 views
0

J'utilise node-coap pour envoyer des données à un serveur coap, j'ai besoin d'utiliser une option personnalisée dans le paquet donc je cours ce code:comment enregistrer une nouvelle option avec coap.registerOption

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() 

La fonction toBinary et toString sont définis comme suit:

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

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

Ce morceau de code ne fonctionne pas. Quelle est la bonne façon d'utiliser la méthode registerOption?

+0

L'avez-vous déjà réparé? Veuillez ajouter la pile. –

Répondre

1

Dans le fichier Lisez-moi de noeud-coap, un exemple de setOption utilise un nom numérique pour l'option personnalisée.

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() 
}) 

Et les options étaient:

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

Il est impossible de passer un nom d'option alphabétique comme nœud-COAP utilise le module COAP paquet où le nom de l'option est analysée comme entier:

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

Je vous recommande de creat e un problème/PR à node-coap github repo pour en faire une explication plus claire à README.