-
服务端代码
// postserver.js // 获取客户端post来的title、text参数,然后返回给客户端 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);
在控制台中执行
node postserver.js
,开启http服务,监听3000端口。这是一个没有使用第三方库的服务器,直接由Node.js实现
http服务器
并且对客户端的请求作出反应,所以从代码上看会比其它php,jsp等复杂很多。其实是其它的语言已经把这部分功能剥离到了http服务器上,而Node.js需要自己实现http服务器
,如果采用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();
开一个新的控制台,执行
node httprequest.js
, 可以得到服务端返回的结果:$ node postclient.js request begin: Hello request end. -------------------- request begin: Arthur request end. --------------------
这里我们发现,服务端每通过res.write()一次,客户端的
http.request
中的function(res){...}
便会被执行一次。值得注意下。