1

Voici le code:res.write ne retourne pas la valeur attendue

var http = require('http') 

var options = { 
    hostname: 'localhost', 
    method: 'POST', 
    port: 8000, 
    path: '/' 
} 

var s = 3; 

http.request(options, (res)=>{ 
}).end(s+'') 


http.createServer((req, res)=>{ 
    res.writeHead(200, {'Content-type': 'text/plain'}) 
    var a = ""; 
    req.on('data', (data)=>{   
     a+= data 
    }) 
    req.on('end',()=>{ 
     res.write(a) 
     res.end()  
    }) 
}).listen(8000) 

Pourquoi le serveur pourrait être le retour des informations non valides au client lorsqu'une valeur de retour de 3 est prévu?

+0

Avez-vous déterminé ce qui est retourné actuellement par res.write()? –

+0

Actuellement ne retourne rien avec le res.write() – Mark

+0

Ok. Je recommande de jeter un oeil à: https://nodejs.org/api/http.html#http_http_request_options_callback. Peut-être que vous avez déjà. Quoi qu'il en soit, ils ont un exemple d'implémentation sur cette page. –

Répondre

0

Je l'ai résolu. C'était un problème de visibilité de la variable a.

var http = require('http') 
var a = ''; 
var options = { 
    hostname: 'localhost', 
    method: 'POST', 
    port: 8000, 
    path: '/' 
} 

var s = 3; 

http.request(options, (res)=>{ 
}).end(s+'') 


http.createServer((req, res)=>{ 
    res.writeHead(200, {'Content-type': 'text/plain'}) 
    req.on('data', (data)=>{   
     a+= data 
    }) 
    req.on('end',()=>{ 
     res.write(a) 
     res.end()  
    }) 
}).listen(8000) 
1

Il ne retourne 3, mais dans votre exemple, votre ne collecte pas sur votre demande ..

Voici une version modifiée de votre code qui fait toute demande/réponse, comme un simple écho.

var http = require('http') 

var options = { 
    hostname: 'localhost', 
    method: 'POST', 
    port: 8000, 
    path: '/' 
} 

var s = 3; 

http.request(options, (res)=>{ 
    var str = ''; 
    //another chunk of data has been recieved, so append it to `str` 
    res.on('data', function (chunk) { 
    str += chunk; 
    }); 
    //the whole response has been recieved, so we just print it out here 
    res.on('end', function() { 
    console.log('res: ' + str); 
    }); 
}).end(s+'') 


http.createServer((req, res)=>{ 
    res.writeHead(200, {'Content-type': 'text/plain'}) 
    var a = ""; 
    req.on('data', (data)=>{ 
     a+= data 
    }) 
    req.on('end',()=>{ 
     console.log('req: ' + a) 
     res.write(a) 
     res.end() 
    }) 
}).listen(8000) 

Réponse ->

req: 3 
res: 3 
+0

Le res.write() ne fonctionne pas de toute façon. Avec le console.log travaillé avant aussi. – Mark

+0

En fait, si je lance le navigateur à l'adresse, http://127.0.0.1:8000/, après avoir lancé le programme montrant l'écran blanc, puis vide, au lieu de voir le numéro 3. – Mark