首頁 web前端 js教程 在Node.js中如何建立Web、TCP伺服器

在Node.js中如何建立Web、TCP伺服器

Jun 22, 2018 pm 04:33 PM
node.js 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/");
登入後複製

上面是我整理給大家的,希望今後會對大家有幫助。

相關文章:

在laydate.js中載入路徑出現錯誤

在vue-router中如何實作路由傳參

使用jQuery操作table如何實作儲存格合併

以上是在Node.js中如何建立Web、TCP伺服器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
兩個點博物館:所有展覽以及在哪裡可以找到它們
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

CentOS上搭建web伺服器的安全審計與事件日誌管理 CentOS上搭建web伺服器的安全審計與事件日誌管理 Aug 05, 2023 pm 02:33 PM

CentOS上搭建web伺服器的安全審計與事件日誌管理

一文聊聊Node中的記憶體控制 一文聊聊Node中的記憶體控制 Apr 26, 2023 pm 05:37 PM

一文聊聊Node中的記憶體控制

深入聊聊Node中的File模組 深入聊聊Node中的File模組 Apr 24, 2023 pm 05:49 PM

深入聊聊Node中的File模組

最佳實務:CentOS搭建web伺服器的效能調優指南 最佳實務:CentOS搭建web伺服器的效能調優指南 Aug 04, 2023 pm 12:17 PM

最佳實務:CentOS搭建web伺服器的效能調優指南

CentOS搭建web伺服器前需注意的權限與存取控制策略 CentOS搭建web伺服器前需注意的權限與存取控制策略 Aug 05, 2023 am 11:13 AM

CentOS搭建web伺服器前需注意的權限與存取控制策略

一起聊聊Node中的事件循環 一起聊聊Node中的事件循環 Apr 11, 2023 pm 07:08 PM

一起聊聊Node中的事件循環

深入了解Node中的Buffer 深入了解Node中的Buffer Apr 25, 2023 pm 07:49 PM

深入了解Node中的Buffer

入門級教學:在CentOS上建立web伺服器的快速指南 入門級教學:在CentOS上建立web伺服器的快速指南 Aug 04, 2023 pm 06:04 PM

入門級教學:在CentOS上建立web伺服器的快速指南

See all articles