当前位置: 首页 > news >正文

中牟网站推广阿里云注册域名

中牟网站推广,阿里云注册域名,视频上传网站如何做,做网络调查的网站赚钱1. HTTP服务器 #HTTP全称是超文本传输协议,构建于TCP之上,属于应用层协议。1.1 创建HTTP服务器let server http.createServer([requestListener]); server.on(request,requestListener); 复制代码requestListener 当服务器收到客户端的连接后执行的处理…

1. HTTP服务器 #

HTTP全称是超文本传输协议,构建于TCP之上,属于应用层协议。

1.1 创建HTTP服务器

let server  = http.createServer([requestListener]);
server.on('request',requestListener);
复制代码
  • requestListener 当服务器收到客户端的连接后执行的处理
    • http.IncomingMessage 请求对象
    • http.ServerResponse对象 服务器端响应对象

1.2 启动HTTP服务器

server.listen(port,[host],[backlog],[callback]);
server.on('listening',callback);
复制代码
  • port 监听的端口号
  • host 监听的地址
  • backlog 指定位于等待队列中的客户端连接数
let http = require('http');
let server = http.createServer(function(req,res){
}).listen(8080,'127.0.0.1',function(){console.log('服务器端开始监听!')});
复制代码

1.3 关闭HTTP服务器

server.close();
server.on('close',function(){});
复制代码
let http = require('http');
let server = http.createServer(function(req,res){
});
server.on('close',function(){console.log('服务器关闭');
});
server.listen(8080,'127.0.0.1',function(){console.log('服务器端开始监听!')server.close();
});
复制代码

1.4 监听服务器错误

server.on('error',function(){if(e.code == 'EADDRINUSE'){console.log('端口号已经被占用!);   }
});
复制代码

1.5 connection

let server = http.createServer(function(req,res){
});
server.on('connection',function(){console.log(客户端连接已经建立);
});
复制代码

1.6 setTimeout

设置超时时间,超时后不可再复用已经建立的连接,需要发请求需要重新建立连接。默认超时时间时2分钟

server.setTimeout(msecs,callback);
server.on('timeout',function(){console.log('连接已经超时');
});
复制代码

1.7 获取客户端请求信息

  • request
    • method 请求的方法
    • url 请求的路径
    • headers 请求头对象
    • httpVersion 客户端的http版本
    • socket 监听客户端请求的socket对象
      let http = require('http');
      let fs = require('fs');
      let server = http.createServer(function(req,res){
      if(req.url != '/favicon.ico'){
      let out = fs.createWriteStream(path.join(__dirname,'request.log'));
      out.write('method='+req.method);
      out.write('url='+req.url);
      out.write('headers='+JSON.stringify(req.headers));
      out.write('httpVersion='+req.httpVersion);
      }
      }).listen(8080,'127.0.0.1);
      复制代码
let http = require('http');
let fs = require('fs');
let server = http.createServer(function(req,res){let body = [];req.on('data',function(data){body.push(data);});req.on('end',function(){let result = Buffer.concat(body);console.log(result.toString());});
}).listen(8080,'127.0.0.1);
复制代码

1.8 querystring

querystring模块用来转换URL字符串和URL中的查询字符串

1.8.1 parse方法用来把字符串转换成对象

querystring.parse(str,[sep],[eq],[options]);
复制代码

1.8.2 stringify方法用来把对象转换成字符串

querystring.stringify(obj,[sep],[eq]);
复制代码

1.9 querystring

url.parse(urlStr,[parseQueryString]);
复制代码
  • href 被转换的原URL字符串
  • protocal 客户端发出请求时使用的协议
  • slashes 在协议与路径之间是否使用了//分隔符
  • host URL字符串中的完整地址和端口号
  • auth URL字符串中的认证部分
  • hostname URL字符串中的完整地址
  • port URL字符串中的端口号
  • pathname URL字符串的路径,不包含查询字符串
  • search 查询字符串,包含?
  • path 路径,包含查询字符串
  • query 查询字符串,不包含起始字符串?
  • hash 散列字符串,包含#

1.10 发送服务器响应流

http.ServerResponse对象表示响应对象

1.10.1 writeHead

response.writeHead(statusCode,[reasonPhrase],[headers]);
复制代码
  • content-type 内容类型
  • location 将客户端重定向到另外一个URL地址
  • content-disposition 指定一个被下载的文件名
  • content-length 服务器响应内容的字节数
  • set-cookie 在客户端创建Cookie
  • content-encoding 指定服务器响应内容的编码方式
  • cache-cache 开启缓存机制
  • expires 用于制定缓存过期时间
  • etag 指定当服务器响应内容没有变化不重新下载数据

1.10.2 Header

设置、获取和删除Header

response.setHeader('Content-Type','text/html;charset=utf-8');
response.getHeader('Content-Type');
response.removeHeader('Content-Type');
response.headersSent 判断响应头是否已经发送
复制代码

1.10.3 headersSent

判断响应头是否已经发送

let http = require('http');
let server = http.createServer(function(req,res){console.log(resopnse.headersSent?"响应头已经发送":"响应头未发送!");res.writeHead(200,'ok);console.log(resopnse.headersSent?"响应头已经发送":"响应头未发送!");
});
复制代码

1.10.4 sendDate

不发送Date

res.sendDate = false;
复制代码

1.10.5 write

可以使用write方法发送响应内容

response.write(chunk,[encoding]);
response.end([chunk],[encoding]);
复制代码

1.10.6 timeout

可以使用setTimeout方法设置响应让超时时间,如果在指定时间内不响应,则触发timeout事件

response.setTimeout(msecs,[callback]);
response.on('timeout',callback);
复制代码

1.10.7 close

在响应对象的end方法被调用之前,如果连接中断,将触发http.ServerResponse对象的close事件

response.on('close',callback);
复制代码

1.10.8 parser

net
onconnection_http_server.js
连接监听
connectionListenerInternal
socketOnData
onParserExecuteCommon
parserOnIncoming复制代码

2. HTTP客户端

2.1 向其他网站请求数据

let req = http.request(options,callback);
req.on('request',callback);
request.write(chunk,[encoding]);
request.end([chunk],[encoding]);复制代码
  • host 指定目标域名或主机名
  • hostname 指定目标域名或主机名,如果和host都指定了,优先使用hostname
  • port 指定目标服务器的端口号
  • localAddress 本地接口
  • socketPath 指定Unix域端口
  • method 指定HTTP请求的方式
  • path 指定请求路径和查询字符串
  • headers 指定客户端请求头对象
  • auth 指定认证部分
  • agent 用于指定HTTP代理,在Node.js中,使用http.Agent类代表一个HTTP代理,默认使用keep-alive连接,同时使用http.Agent对象来实现所有的HTTP客户端请求
let http = require('http');
let options = {hostname: 'localhost',port: 8080,path: '/',method: 'GET'
}
let 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.end();
复制代码

2.2 取消请求

可以使用abort方法来终止本次请求

req.abort();
复制代码

2.3 监听error事件

如果请求过程中出错了,会触发error事件

request.on('error',function(err){});
复制代码

2.4 socket

建立连接过程中,为该连接分配端口时,触发socket事件

req.on('socket',function(socket){socket.setTimeout(1000);socket.on('timeout',function(){req.abort()});
});
复制代码

2.5 get

可以使用get方法向服务器发送数据

http.get(options,callback);
复制代码

2.6 addTrailers

可以使用response对象的addTrailers方法在服务器响应尾部追加一个头信息

let http = require('http');
let path = require('path');
let crypto = require('crypto');let server = http.createServer(function (req, res) {res.writeHead(200, {'Transfer-Encoding': 'chunked','Trailer': 'Content-MD5'});let rs = require('fs').createReadStream(path.join(__dirname, 'msg.txt'), {highWaterMark: 2});let md5 = crypto.createHash('md5');rs.on('data', function (data) {console.log(data);res.write(data);md5.update(data);});rs.on('end', function () {res.addTrailers({'Content-MD5': md5.digest('hex')});res.end();});
}).listen(8080);
复制代码
let http = require('http');
let options = {hostname: 'localhost',port: 8080,path: '/',method: 'GET'
}
let 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);});res.on('end', function () {console.log('trailer', res.trailers);});
});
req.end();
复制代码

2.7 制作代理服务器

let http = require('http');
let url = require('url');
let server = http.createServer(function (request, response) {let {path} = url.parse(request.url);let options = {host: 'localhost',port: 9090,path: path,headers: request.headers}let req = http.get(options, function (res) {console.log(res);response.writeHead(res.statusCode, res.headers);res.pipe(response);});req.on('error', function (err) {console.log(err);});request.pipe(req);
}).listen(8080);复制代码


http://www.lbrq.cn/news/2629243.html

相关文章:

  • 投资网站建设百度在线识图查图片
  • 招聘类网站怎么做人工智能培训机构排名前十
  • 临沂医院网站建设cms网站
  • 上城区网站建设价格黄页
  • pc站和手机网站爱战网关键词查询网站
  • 南山网站设计电话网络营销理论
  • 网站二级目录 修改路径关键词收录查询工具
  • 酒店网站建设 源码产品软文范例1000字
  • 地图上如何添加自己公司的地址网站seo优化发布高质量外链
  • 郑州做网站公司有哪些百度帐号
  • 网站统计工具是什么意思长沙seo外包服务
  • 南宁3及分销网站制作seo技术培训山东
  • 榆次做网站搭建一个网站需要多少钱?
  • 有哪些做外贸网站互联网推广员是做什么
  • 保定网站建设设计公司网站推广做什么
  • 网站做等保备案整站优化案例
  • 网站建设二级页面方案北京网络推广
  • 苏州做网站哪里好北京优化互联网公司
  • 制作网站需要学什么seo查询源码
  • 二级域名做非法网站电商运营推广是做什么的
  • 政府网站集约化建设总结外贸营销网站建设介绍
  • 成都企业网站模板建设seo百度发包工具
  • 江门平台入口网站优化推广方法
  • 做网站 属于电子商务登封网络推广公司
  • 怎么查一个地区的所有网站域名短信广告投放
  • 北京微网站建设公司哪家好国内新闻大事20条
  • 郑州国际装备制造业会展网站的建设营销的手段和方法
  • wordpress简题浙江关键词优化
  • 常州企业网站建设价格seo是什么姓
  • 做汽车新闻哪个网站好网推项目平台
  • [LVGL] 布局系统 lv_flex, lv_grid | 输入设备 lv_indev | union
  • GPT-5 将在周五凌晨1点正式发布,王炸模型将免费使用??
  • Kubernetes中无法删除一个对象,持续处于Terminating状态的解决方案
  • 利用C++11和泛型编程改进原型模式
  • 二叉树算法
  • MySQL 5.7 和 8.0 离线安装教程(图文版适合电脑小白)