-
服務(wù)端代碼
// postserver.js // 獲取客戶端post來的title、text參數(shù),然后返回給客戶端 var http = require('http'); var querystring = require('querystring'); var server = http.createServer(function(req, res) { var post = ''; req.on('data', function(chunk) { post += chunk; }); req.on('end', function() { post = querystring.parse(post); res.write(post.title); res.write(post.text); res.end(); }); }).listen(3000);
在控制臺中執(zhí)行
node postserver.js
,開啟http服務(wù),監(jiān)聽3000端口。這是一個沒有使用第三方庫的服務(wù)器,直接由Node.js實現(xiàn)
http服務(wù)器
并且對客戶端的請求作出反應(yīng),所以從代碼上看會比其它php,jsp等復(fù)雜很多。其實是其它的語言已經(jīng)把這部分功能剝離到了http服務(wù)器上,而Node.js需要自己實現(xiàn)http服務(wù)器
,如果采用Express框架
,這部分將可以和其它的一樣精簡。 -
客戶端代碼
// httprequest.js var http = require('http'); var querystring = require('querystring'); var contents = querystring.stringify({ title: 'Hello ', text: 'Arthur', }); var options = { host: '127.0.0.1', port: '3000', //非80端口需要指定,如果是80端口則可以省略。 path: '/', headers: { 'Content-Type': 'application/x-www-form-urlencoded', 'Content-Length': contents.length } }; var req = http.request(options, function(res) { res.setEncoding('utf8'); res.on('data', function(data) { console.log('request begin:'); console.log(data); console.log('request end.'); console.log('--------------------'); }); }); req.write(contents); req.end();
開一個新的控制臺,執(zhí)行
node httprequest.js
, 可以得到服務(wù)端返回的結(jié)果:$ node postclient.js request begin: Hello request end. -------------------- request begin: Arthur request end. --------------------
這里我們發(fā)現(xiàn),服務(wù)端每通過res.write()一次,客戶端的
http.request
中的function(res){...}
便會被執(zhí)行一次。值得注意下。