web前端

纯手写node静态服务器

2022-05-19  本文已影响0人  姜治宇

客户端跟服务端的通信都是通过socket进行的。
客户端跟服务端各开一个socket,客户端通过三次握手协议跟服务端的socket取得联系后,将准备发送的资源进行报文封装(request请求头)放在socket上,然后服务端从socket获取数据进行处理;
同理,当服务端处理完毕后,也是将数据进行报文封装(response响应头)放在socket上,客户端会从服务端的socket获取数据,然后进行相关的解析。
node提供的http包,其实就是对服务端的socket进行了封装,利用它可以很容易的实现一个静态服务器。

const fs = require('fs');
const path = require('path');
const url = require('url');
const http = require('http');
const mime = require('mime');//npm安装
let server = http.createServer((req, res) => {
    let dir = path.join('D:', 'test', 'public');//资源的存放目录
    let urlObj = url.parse(req.url);
    let pathname = urlObj.pathname;
    let ext = path.extname(req.url);

    res.writeHeader(200, { 'Content-Type': mime.getType(ext) });
    try { //Sync函数需要捕获异常
        let filepath = path.join(dir, pathname);
        if (fs.existsSync(filepath)) {
            res.write(fs.readFileSync(filepath));
        } else {
            res.write('file not found');
        }

    } catch (err) {

        res.write('system error');
    }
    res.end();
});


server.listen(8888);
上一篇下一篇

猜你喜欢

热点阅读