/*http客户端*/
/*
* 1、在HTTP模块中,可以使用request方法向其他网站请求数据,使用方法如下
* var req = http.request(options,callback)
* options是一个对象或者字符串,用于指定目标的UrL地址
* callback函数为 function(response){
* //response:可以利用该对象来读取相应流参数
* }
*2、使用request方法后,可以用http.ClientRequest对象的write对象向目标网站发送数据
* request.write(chunk,[encoding])
* 其中chunk用于指定发送的内容,encoding指定如何编码字符串
*3、 可以用http.ClientRequest对象的end方法来结束本次请求
* request.end([chunk],[encoding]);
*4、可以用http.ClientRequest对象的abort方法来终止请求
* request.abort();
*5、http.ClientRequest对象的错误事件
* request.on('error',function(err){
* //事件回调函数代码
* })
* 6、在建立连接过程中,当为该端口分配端口时,触发http.ClientRequest对象的socket事件
* request.on('socket',function(socket){
* //事件回调代码
* })
* 7、可以在http.ClientRequest对象的socket事件的回调函数中,使用socket端口的setTimeout方法指定socket的超时时间
* 然后监听timeout事件,在回调函数中指定当超时时使用http.ClientRequest对象的abort方法终止请求
* req.on('cocket',function (socket) {
socket.setTimeout(1000);
socket.on('timeout',function () {
req.abort();
});
});
8、由于超时终止请求将会触发错误,因此需要绑定error事件
*
* */
/*使用setTimeout方法设置端口超时时间*/
/*var http = require('http');
var options={
hostname:'www.amicrosoft.cn',
port:80,
path:'/',
method:'GET'
};
//下面一句也可以这样写var req = http.get(options,function (res) {
//使用get请求数据时不用写end方法,系统将自动调用。其他和request一样
var req = http.request(options,function (res) {
console.log('状态码:'+res.statusCode);
console.log('响应头:'+JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data',function (chunk) {
console.log('相应内容:'+chunk);
});
});
//设置超时时间
req.setTimeout(1000,function () {
req.abort();
});
req.on('error',function (err) {
if(err.code == 'ECONNRESET'){
console.log('socket端口超时');
}
else
console.log('在请求数据过程中发生错误,错误代码为:'+err.code);
});
req.end();*/
/*向本地服务器请求数据*/
服务器端:
var http = require('http');
var server = http.createServer(function (req, res) {
if(req.url != '/favicon.ico'){
req.on('data',function (data) {
console.log('服务器端接收到数据:'+data);
res.end();
});
}
}).listen(3000);
/*客户端*/
var http = require('http'); var options = { hostname:'localhost', port:3000, path:'/', method:'POST' }; var req = http.request(options); req.write('您好'); req.end();
/*制作代理服务器*//*var http = require('http'); var url = require('url'); var server = http.createServer(function (sreq, sres) { var url_parts = url.parse(sreq.url); var opt = { host:'www.amazon.cn', port:80, path:url_parts.pathname, headers:sreq.headers } var creq = http.request(opt,function (cres) { sres.writeHead(cres.statusCode,cres.headers); cres.pipe(sres); }); sreq.pipe(creq); }).listen(3000);*/