源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Node.js创建Web、TCP服务器

  • 时间:2020-03-11 04:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Node.js创建Web、TCP服务器
使用http模块创建Web服务器 [b]Web服务器的功能:[/b] 接受HTTP请求(GET、POST、DELETE、PUT、PATCH) 处理HTTP请求(自己处理,或请求别的程序处理) 做出响应(返回页面、文件、各类数据等) [b]常见的Web服务器架构:[/b] Nginx、Apache:负责接受HTTP请求,确定谁来处理请求,并返回请求的结果 php-fpm / php模块:处理分配给自己的请求,并将处理结果返回给分配者 [b]常见请求种类:[/b] 请求文件:包括静态文件(网页、图片、前端JavaScript文件、css文件...),及由程序处理得到的文件 完成特定的操作:如登录、获取特定数据等 [b]Node.js的Web服务器: [/b] 不依赖其他特定的Web服务器软件(如Apache、Nginx、IIS......) Node.js代码处理请求的逻辑 Node.js代码负责Web服务器的各种“配置” 使用Express创建Web服务器 简单的Express服务器 静态文件服务 路由 中间件 [b]简单的Express服务器:[/b]
var express = require('express'); 
var app = express(); 
app.get('', function(req, res){ 
<span style="white-space:pre"> </span>res.end('hello\n'); 
<span style="white-space:pre"> </span>}); 
<span style="white-space:pre"> </span>app.listen(18001, function afterListen(){ 
<span style="white-space:pre"> </span>console.log('express running on http://localhost:18001'); 
<span style="white-space:pre"> </span>}); 
静态文件范围: 网页、纯文本、图片、前端JavaScript代码、CSS样式表文件、媒体文件、字体文件 使用Express访问静态文件
<span style="white-space:pre"></span>app.use(express.static('./public'));
路由: 将不同的请求,分配给相应的处理函数 区分:路径、请求方法 三种路由实现方法: path:比较简单 Router:比较适合同一个路由下的多个子路由 route:比较适合API 中间件 Connect:Node.js的中间件框架 分层处理 每层实现一个功能 创建TCP服务器 使用net模块创建TCP服务器 使用telnet连接TCP服务器 使用net创建TCP客户端 [b]利用node.js搭建简单web服务器JS代码部分:[/b]
var http = require('http');
var url = require('url');
var path = require('path');
var fs = require('fs');
var dir, arg = process.argv[2] || ''; // 命令行第三个参数,用来接收目录,可为空,相对当前server.js文件的目录名称
// 比如使用命令 node server debug,意思就是debug文件夹与server.js文件同级
// 且你想以debug文件夹启动web服务
 
http.createServer(function (req, res) {
var pathname = __dirname + url.parse(req.url).pathname;
dir = dir ? dir : pathname; // 记住dir(目录)
pathname = dir ? pathname.replace(dir, dir + arg + '/') : pathname; // 替换文件静态路径
if (path.extname(pathname) == "") {
pathname += "/";
}
if (pathname.charAt(pathname.length - 1) == "/") {
pathname += "index.html"; // 入口文件,此处默认index.html
}
 
fs.exists(pathname, function (exists) {
if (exists) {
switch (path.extname(pathname)) {
case ".html":
res.writeHead(200, {"Content-Type": "text/html"});
break;
case ".js":
res.writeHead(200, {"Content-Type": "text/javascript"});
break;
case ".css":
res.writeHead(200, {"Content-Type": "text/css"});
break;
case ".gif":
res.writeHead(200, {"Content-Type": "image/gif"});
break;
case ".jpg":
res.writeHead(200, {"Content-Type": "image/jpeg"});
break;
case ".png":
res.writeHead(200, {"Content-Type": "image/png"});
break;
default:
res.writeHead(200, {"Content-Type": "application/octet-stream"});
} 
// res可以自己添加信息来简单交互 比如可以修改点header信息 或者修改返回的资源数据
fs.readFile(pathname, function (err, data) {
res.end(data);
});
}
else {
res.writeHead(404, {"Content-Type": "text/html"});
res.end("<h1>404 Not Found</h1>");
}
});
}).listen(8085, "127.0.0.5"); // 服务器端口
console.log("server running at http://127.0.0.5:8085/");
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部