美文网首页web前端
纯手写node静态服务器

纯手写node静态服务器

作者: 姜治宇 | 来源:发表于2022-05-19 17:17 被阅读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);

相关文章

网友评论

    本文标题:纯手写node静态服务器

    本文链接:https://www.haomeiwen.com/subject/zhitprtx.html