1)导入http 模块
const http = require('http')
2)创建 web 服务器实例
- //调用http.createServer()方法,即可快速创建一个web服务器实例
- const server = http.createServer()
3)为服务器实例绑定 request 事件,监听客户端的请求
- // 使用服务器实例的 .on() 方法,为服务器绑定一个 request 事件
- server.on( 'request', (req, res) => {
- // 只要有客户端来请求我们自己的服务器,就会触发 request 事件,从而调用这个事件处理函数
- console.log('Someone visit our web server.')
- })
4)启动服务器
- // 调用 server.listen(端口号,cb回调) 方法,即可启动 web 服务器
- server.listen(80,() => {
- console.log('http server running at http://127.0.0.1')
- })
整合代码
- const http = require('http')
- const server = http.createServer()
- server.on('request',function(req,res){
- console.log('这是一个基本web服务器')
- })
- server.listen(8010,function () {
- console.log('服务器启动成功')
- })
- //启动nodejs
- node ./web.js //'服务器启动成功'
- //打开网页(192.168.1.1是本机IP地址)
- 192.168.1.1:8010 //'这是一个基本web服务器'
只要服务器接收到了客户端的请求,就会调用通过 server.on() 为服务器绑定的 request 事件处理函数.
如果想在事件处理函数中,访问与客户端相关的数据或属性,可以使用如下的方式:
- server.on('request', (req) => {
- // req 是请求对象,它包含了与客户端相关的数据和属性,例如:
- // req.ur1 是客户端请求的 URL 地址
- // req.method 是客户端的 method 请求类型
- const str = `Your request url is ${req.url}, and request method is ${req.method}`
- console.log(str)
- //192.168.1.1:8010/index.html
- //Your request url is /index.html, and request method is GET
- })
在服务器的 request 事件处理函数中,如果想访问与服务器相关的数据或属性,可以使用如下的方式
- server.on('request', (req, res) => {
- // res 是响应对象,它包含了与服务器相关的数据和属性,例如:
- // 要发送到客户端的字符串
- const str = `Your request url is ${req.url}, and request method is ${req.method}`
- // res.end() 方法的作用:
- // 向客户端发送指定的内容,并结束这次请求的处理过程
- res.end(str)
- })
当调用res.end()方法,向客户端发送中文内容的时候,会出现乱码问题,此时,需要手动设置内容的编码格式
- server.on( 'request', (req, res) => (
- // 发送的内容包含中文
- const str =`您请求的 url 地址是 ${req.url},请求的 method 类型是 ${req.method}`
- // 为了防止中文显示乱码的问题,需要设置响应头 Content-Type 的值为 text/html; charset=utf-8
- res.setHeader('Content-Type','text/html; charset=utf-8' )
- // 把包含中文的内容,响应给客户端
- res .end(str)
- })