如何使用node构建一个简单的web服务器

在Node中专门提供了一个核心模块:http,http这个模块的职责就是帮你创建编写服务器

方法:

1.加载http核心模块,

var http = require('http');

2.使用http.createSever()方法创建一个Web服务器,返回一个Server实例

var server=http.createServer();

3.可以用这个服务做什么?

  • 提供服务,对数据的服务
  • 发请求
  • 接收请求
  • 处理请求
  • 给个反馈
  • 注册request请求事件

     request请求事件接收两个参数,

    Request:请求对象,可以用来获取客户端的一些请求

    Response:响应对象,可以用来给客户端发送信息

    response对象有一个方法:write,可以用来给客户端发送响应数据,可以多次使用,但是最后都一定要用end来结束响应,                                                  否则客户端会一直等待;

  • 当客户端请求发过来,就会自动的触发服务器的request请求事件,然后执行回调函数;
server.on('request',function){
    console.log('收到客户端的请求了请求路径是:'+request+url);
  console.log('请求我的客户端的地址是:', req.socket.remoteAddress, req.socket.remotePort)
    response.write('hello')
    response.write(' nodejs')
    response.end()
}

    也可以使用简单一点的操作,在end的同时直接发送数据;

res.end('hello nodejs')

4.绑定端口号,启动服务器;

server.listen('3000',function(){
    console.log('服务器启动已经产生了,可以访问了');
})

Note:当代码修改好了之后,需要关闭服务器,重新开启服务器才有效;不管在请求url后面加上任何东西,都不会改变请求返回的响应内容,因为服务器只能处理到你代码做的那一步,不能做出其他的;

根据不同的请求路径发送不同的响应结果:

1.获取请求路径;

     res.url获得到的是端口号的那部分路径,所有的url都以 / 开头

2.判断路径处理响应;

var url = req.url

  if (url === '/') {
    res.end('index page')
  } else if (url === '/login') {
    res.end('login page')
  } else if (url === '/products') {
    var products = [{
        name: '苹果 X',
        price: 8888
      },
      {
        name: '菠萝 X',
        price: 5000
      },
      {
        name: '小辣椒 X',
        price: 1999
      }
    ]

    // 响应内容只能是二进制数据或者字符串
    //  数字
    //  对象
    //  数组
    //  布尔值
    res.end(JSON.stringify(products))
  } else {
    res.end('404 Not Found.')
  }
})
  • ip是用来定位计算机的
  • 端口号用来定位具体的应用程序
  • 一切需要联网通信的软件都会占用一个端口号
  • 端口号的范围是0~65536
  • 在计算机中有一些默认的端口号,最好不要去使用(例如,http服务的80)
  • 可以同时开启多个服务,但一定要确保不同服务占用的端口号不一样才可以,同一个端口号只能被一个程序占用

猜你喜欢

转载自blog.csdn.net/Gbing1228/article/details/88648076