本文实例讲述了node . js使用http模块创建服务器和客户端。分享给大家供大家参考,具体如下:
节点。js中的http模块提供了创建服务器和客户端的方法,http全称是超文本传输协议,基于tcp之上,属于应用层协议。
<强>一、创建http服务器强>
const http=要求(“http”);//创建一个http服务器 让服务器=http.createServer ();//监听端口 服务器。听(8888年,“0.0.0.0”);//设置超时时间 服务器。setTimeout (2 * 60 * 1000);//服务器监听时触发 服务器。(“倾听”,函数(){ console.log(“监听开始”); });//接收到客户端请求时触发 服务器。(“请求”,函数(点播,res) {//请求表示客户端请求对象,是http.IncomingMessage类的实例,可读流。//res表示服务端响应对象,是http.ServerResponse类的实例,可写流。//请求方法 console.log (req.method);//请求url console.log (req.url);//请求的头信息 console.log (req.headers);//请求的http版本 console.log (req.httpVersion);//请求对象的套接字对象 console.log (req.socket); res.end('你好'); });//连接建立时触发 服务器。(“连接”,函数(插座){ console.log(“建立连接的); });//客户端向服务器发送连接请求时触发 服务器。(“连接”功能(要求、插座、头){ console.log(“客户端连接”); });//服务器关闭时触发,调用关闭()方法。 服务器。(“关闭”功能(){ console.log(“服务器关闭”); });//发生错误时触发 服务器。(“错误”,函数(err) { console.log(错); });//如果连接超过指定时间没有响应,则触发。//超时后,不可再复用已建立的连接,需发请求重新建立连接 服务器。(“超时”,函数(插座){ console.log(“连接已超时'); }); >之前请求对象点播里保存了客户端的详细信息,包括url,请求参数等,为了方便的解析这些参数,我们可以使用url.parse()方法。
const http=要求(“http”); const url=要求(url);//创建一个http服务器 让服务器=http.createServer ();//监听端口 服务器。听(8888年,“0.0.0.0”);//接收到客户端请求时触发 服务器。(“请求”,函数(点播,res) {//解析url返回一个url对象//如果参数二设为true,则url对象中查询的属性将通过querystring.parse()生成一个对象 让params=url.parse(点播。url,真实);//完整url地址 控制台。日志(“href”, params.href);//主机名,包含端口 控制台。日志(“主机”,params.host);//主机名,不包含端口 控制台。日志(主机名,params.hostname);//端口 控制台。日志(“端口”,params.port);//协议 控制台。日志(“协议”,params.protocol);//路径,包含查询字符串 控制台。日志(“路径”,params.path);//路径,不包含查询字符串 控制台。日志(“路径”,params.pathname);//查询字符串,不包含& # 63; 控制台。日志(‘查询’,params.query);//查询字符串,包含& # 63; 控制台。日志(‘搜索’,params.search);//散列字符串,包含# 控制台。日志(散列,params.hash); res.end(“结束”); }); >之前响应对象res可以设置服务器响应给客户端的一些参数。
const http=要求(“http”); const url=要求(url);//创建一个http服务器 让服务器=http.createServer ();//监听端口 服务器。听(8888年,“0.0.0.0”);//接收到客户端请求时触发 服务器。(“请求”,函数(点播,res) {//设置响应头信息 res.setHeader(“内容类型”、“text/html; charset=utf - 8”);//获取响应头信息 res.getHeader(“内容编码”); res.setHeader(“测试”、“测试”);//删除响应头信息 res.removeHeader(测试);//判断响应头是否已发送 console.log (res。headersSent & # 63;“已发送的:“未发送的);//注意writeHead()与setHeader()的区别,setHeader()并不会立即发送响应头。//而writeHead()会发送,writeHead()设置的响应头比setHeader()的优先。 res.writeHead(200年,{ ' aaa ': ' aaa ' });//判断响应头是否已发送 console.log (res。headersSent & # 63;“已发送的:“未发送的);//如何不发送日期日期,设置为错误将不发送的日期 res.sendDate=false;//设置响应的超时时间 res.setTimeout (30 * 1000); res.on(“超时”,函数(){ console.log('响应超时'); });//向客户端发送数据//由于res响应对象也是一个流,所以可以使用写()来写数据 res.write (Buffer.from(你的好')); res.write (Buffer.from(“欢迎')); res.end(“结束”); });node . js使用http模块创建服务器和客户端完整示例