在Node.js中如何创建Web、TCP服务器
这篇文章主要介绍了用Node.js创建Web服务器和TCP服务器的方法和处理技巧,需要的读者们学习一下吧。
使用http模块创建Web服务器
Web服务器的功能:
接受HTTP请求(GET、POST、DELETE、PUT、PATCH)
处理HTTP请求(自己处理,或请求别的程序处理)
做出响应(返回页面、文件、各类数据等)
常见的Web服务器架构:
Nginx、Apache:负责接受HTTP请求,确定谁来处理请求,并返回请求的结果
php-fpm / php模块:处理分配给自己的请求,并将处理结果返回给分配者
常见请求种类:
请求文件:包括静态文件(网页、图片、前端JavaScript文件、css文件...),及由程序处理得到的文件
完成特定的操作:如登录、获取特定数据等
Node.js的Web服务器:
不依赖其他特定的Web服务器软件(如Apache、Nginx、IIS......)
Node.js代码处理请求的逻辑
Node.js代码负责Web服务器的各种“配置”
使用Express创建Web服务器
简单的Express服务器
静态文件服务
路由
中间件
简单的Express服务器:
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客户端
利用node.js搭建简单web服务器JS代码部分:
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/");
上面是我整理给大家的,希望今后会对大家有帮助。
相关文章:
以上是在Node.js中如何创建Web、TCP服务器的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

基于无阻塞、事件驱动建立的Node服务,具有内存消耗低的优点,非常适合处理海量的网络请求。在海量请求的前提下,就需要考虑“内存控制”的相关问题了。 1. V8的垃圾回收机制与内存限制 Js由垃圾回收机

CentOS上搭建Web服务器的安全审计与事件日志管理概述随着互联网的发展,Web服务器的安全审计和事件日志管理变得越来越重要。在CentOS操作系统上搭建Web服务器后,我们需要关注服务器的安全性并保护服务器免受恶意攻击。本文将介绍如何进行安全审计和事件日志管理,并提供相关代码示例。安全审计安全审计是指对服务器的安全状态进行全面的监控和检查,及时发现潜在的

文件模块是对底层文件操作的封装,例如文件读写/打开关闭/删除添加等等 文件模块最大的特点就是所有的方法都提供的**同步**和**异步**两个版本,具有 sync 后缀的方法都是同步方法,没有的都是异

最佳实践:CentOS搭建web服务器的性能调优指南摘要:本文旨在为CentOS搭建web服务器的用户提供一些性能调优的最佳实践,旨在提升服务器的性能和响应速度。将介绍一些关键的调优参数和常用的优化方法,并提供了一些示例代码帮助读者更好地理解和应用这些方法。一、关闭不必要的服务在CentOS搭建web服务器时,默认会启动一些不必要的服务,这些服务会占用系统资

CentOS搭建web服务器前需注意的权限与访问控制策略在搭建web服务器的过程中,权限与访问控制策略是非常重要的一环。正确设置权限和访问控制策略可以保护服务器的安全性,防止非授权用户访问敏感数据或者对服务器进行不当操作。本文将介绍在CentOS系统下搭建web服务器时需要注意的权限与访问控制策略,并提供相应的代码示例。用户与组的管理首先,我们需要创建一个专

事件循环是 Node.js 的基本组成部分,通过确保主线程不被阻塞来实现异步编程,了解事件循环对构建高效应用程序至关重要。下面本篇文章就来带大家深入了解Node中的事件循环 ,希望对大家有所帮助!

最开始的时候 JS 只在浏览器端运行,对于 Unicode 编码的字符串容易处理,但是对于二进制和非 Unicode 编码的字符串处理困难。并且二进制是计算机最底层的数据格式,视频/音频/程序/网络包

如何使用 Node.js 进行前端应用的开发?下面本篇文章给大家介绍一下Node开发前端应用的方法,涉及到表现层应用的开发。我今天分享的方案是针对简单场景的,旨在让前端开发人员不必掌握太多关于 Node.js 的背景知识和专业知识,即使没有代码编写经验,也能完成一些简单的服务端开发任务。
