Триггер COAP API с использованием узла js

Я разработал COAP API в java. Он работает хорошо. Пример URL-адреса: coap://localhost:5683/test-url . Этот API будет запускаться с помощью электронных устройств.

У меня есть еще один проект, разработанный в nodejs. Но я хочу запустить API COAP через узел js.

Я следил за этим URL. node-coap, но он не работает. Пожалуйста, кто-нибудь предложит мне.

const coap    = require('../') // or coap
    , server  = coap.createServer()

server.on('request', function(req, res) {
  res.end('Hello ' + req.url.split('/')[1] + '\n')
})

// the default CoAP port is 5683 
server.listen(function() {

  var req = coap.request('coap://localhost:5683/test-url');
  req.on('response', function(res) {
    res.pipe(process.stdout)
    res.on('end', function() {
      process.exit(0)
    })
  })

  req.end()
});

Детали ошибки:

Error: bind EADDRINUSE 0.0.0.0:5683
    at Object.exports._errnoException (util.js:893:11)
    at exports._exceptionWithHostPort (util.js:916:20)
    at dgram.js:221:18

person RSKMR    schedule 31.08.2016    source источник


Ответы (2)


Сообщение об ошибке EADDRINUSE указывает на то, что порт (5683) уже используется. Вы можете либо изменить порт, либо убить процесс, запущенный на 5683, и попробовать перезапустить приложение.

Вы можете изменить порт, как показано ниже:

var PORT = 3000;
server.listen(PORT, function() {

  var req = coap.request('coap://localhost:5683/test-url');
  req.on('response', function(res) {
    res.pipe(process.stdout)
    res.on('end', function() {
      process.exit(0)
    })
  })

  req.end()
});
person Abhilash Chelankara    schedule 31.08.2016
comment
Да. Я попытался изменить в проекте узла lcoal URL-адрес разработчика, например, coap://api-test.com:5683/test-url. но та же ошибка - person RSKMR; 31.08.2016
comment
Не так. Вы должны изменить порт вашего приложения node-coap. Я добавил фрагмент кода в ответ - person Abhilash Chelankara; 31.08.2016
comment
@pakTech - Да, проблема решена. Я прикрепил свой код в разделе ответов. пожалуйста, проверь это. - person RSKMR; 29.01.2017

Следующий код работает для меня.

var coap = require('coap');    
var coapConnection = {
    host : url,
    pathname : '/path',
    method : 'POST',
    port : '5683',
    confirmable : true
};

var req = coap.request(coapConnection);
req.write(JSON.stringify(spec.body));
req.on('response', function(response) {
    var d = response.payload;
    spec.resp.response = JSON.parse(d.toString('utf8'));
    response.pipe(process.stdout);
    response.on('end', function() {
        console.log("Success");
    });
});
req.end(); 
person RSKMR    schedule 29.01.2017