2015-10-15 8 views
1

Как подключиться к LXD API через домен unix-сокета под nodejs? Я пробую следующий код, но не получается. Я получил этот ответ: HTTP/1.1 400 Bad RequestLXD - Как подключиться к LXD API через доменное имя unix в узле nodejs?

var net = require('net'); 

var lxdUSD='/var/lib/lxd/unix.socket'; 



var net = require('net'); 
var client = net.connect({path: lxdUSD}, 
      function() { //'connect' listener 
       console.log('connected to socket!: '+lxdUSD); 

}); 

client.on('data', function(data) { 
    console.log(data); 
    console.log(data.toString()); 
    client.end(); 
}); 

client.on('end', function() { 
    console.log('disconnected from socket!: '+lxdUSD); 
}); 

client.on('error', function() { 
    console.log('Error'); 
    process.exit(-1); 
}); 
setInterval(function(){ 
      var msg="GET /1.0/containers HTTP/1.1\r\n"; 
      console.log("write to socket: "+msg); 
      client.write(msg); 
      console.log("........"); 

}, 15*1000); 

Попытка следующее из командной строки она работает:

echo -e "GET /1.0/containers HTTP/1.1\r\n" | socat unix-connect:/var/lib/lxd/unix.socket STDIO 

Выход:

HTTP/1.1 200 OK 
Content-Type: application/json 
Date: Thu, 15 Oct 2015 15:02:59 GMT 
Content-Length: 135 

{"type":"sync","status":"Success","status_code":200,"metadata":["/1.0/containers/pc01","/1.0/containers/pc02","/1.0/containers/pc03"]} 

ответ

1

Fixed :

Вместо

var msg="GET /1.0/containers HTTP/1.1\r\n"; 

Должно быть:

var msg="GET /1.0/containers HTTP/1.1\r\n\r\n";