Appearance
网络编程
Node.js 在网络编程方面表现出色,特别是在构建高性能的服务器方面。本节将重点介绍 https 模块和 WebSocket 的使用。
https 模块
https 模块是 Node.js 中用于创建安全的 HTTP 服务器和客户端的模块。它与 http 模块非常相似,但增加了对 TLS/SSL 的支持,从而实现了加密通信。
创建 HTTPS 服务器
要创建一个 HTTPS 服务器,你需要一个 SSL 证书(包括私钥和公钥)。
javascript
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('key.pem'), // 私钥
cert: fs.readFileSync('cert.pem') // 公钥
};
const server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Hello, secure world!\n');
});
server.listen(8000, () => {
console.log('HTTPS server running on port 8000');
});WebSocket
WebSocket 提供了一个在客户端和服务器之间进行双向实时通信的协议 。与传统的 HTTP 请求-响应模型不同,WebSocket 允许服务器主动向客户端推送数据。
在 Node.js 中使用 WebSocket
虽然 Node.js v22 提供了内置的 WebSocket 客户端 ,但要创建 WebSocket 服务器,通常需要依赖第三方库,例如 ws 。
示例:使用 ws 库创建 WebSocket 服务器
首先,安装 ws 库:
bash
npm install ws然后,创建一个 WebSocket 服务器并将其附加到现有的 HTTPS 服务器上 :
javascript
const https = require('https');
const fs = require('fs');
const WebSocket = require('ws');
const options = {
key: fs.readFileSync('key.pem'),
cert: fs.readFileSync('cert.pem')
};
const server = https.createServer(options);
const wss = new WebSocket.Server({ server });
wss.on('connection', (ws) => {
console.log('Client connected');
ws.on('message', (message) => {
console.log(`Received: ${message}`);
// 将收到的消息广播给所有客户端
wss.clients.forEach((client) => {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
ws.on('close', () => {
console.log('Client disconnected');
});
});
server.listen(8000, () => {
console.log('HTTPS and WebSocket server running on port 8000');
});这个例子展示了如何创建一个安全的 WebSocket 服务器,它能够接收来自客户端的消息,并将其广播给所有其他连接的客户端,从而实现实时通信。