📅  最后修改于: 2023-12-03 15:03:11.969000             🧑  作者: Mango
Node.js 是一个开放源代码、跨平台的 Javascript 运行环境,可用于服务器端和网络应用程序的开发。Node.js 中的服务器、流和套接字是其中重要的三个概念,下面我们详细介绍它们。
在 Node.js 中创建 HTTP 服务器非常容易,只需要使用内置的 http 模块即可。以下是一个简单的例子:
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
上述代码创建了一个简单的 HTTP 服务器,监听本地 3000 端口,并在接收到请求时返回一段文本。使用 node index.js
启动该服务器后,可以在浏览器中访问 http://localhost:3000/
,即可看到返回的文本。
Node.js 中的流是一种处理流式数据的抽象接口,使用流可以更高效地处理大型数据集。Node.js 内置了多种流类型,包括可读流、可写流、转换流等。
以下是一个将文件中的数据通过可读流读入,并通过可写流写入另一个文件的例子:
const fs = require('fs');
const readStream = fs.createReadStream('input.txt'); // 创建可读流
const writeStream = fs.createWriteStream('output.txt'); // 创建可写流
readStream.on('data', (chunk) => { // 监听 'data' 事件
writeStream.write(chunk); // 将数据通过可写流写入文件
});
readStream.on('end', () => { // 监听 'end' 事件
writeStream.end(); // 关闭可写流
});
上述代码使用 fs
模块中的 createReadStream
和 createWriteStream
分别创建一个可读流和一个可写流,然后通过监听它们的 data
和 end
事件实现将文件数据从一个文件读入并写入另一个文件。
套接字是基于网络协议栈提供的接口,用于进程间的通信。Node.js 中的套接字被封装为一个叫做 net.Socket
的类,我们可以使用它来创建 TCP 客户端和服务器。
以下是一个简单的 TCP 服务器例子:
const net = require('net');
const server = net.createServer((socket) => { // 创建 TCP 服务器
socket.on('data', (data) => { // 监听 'data' 事件
socket.write(`You said "${data}"`); // 将数据通过客户端套接字返回
});
});
server.listen(8080, () => {
console.log('TCP server listening on port 8080');
});
上述代码创建了一个 TCP 服务器,当客户端连接后,服务器会监听客户端套接字的 data
事件,并将客户端发送的数据返回。
使用 Node.js 中的服务器、流和套接字,可以方便地实现各种网络应用程序。