Ответ
В Node.js я работал с различными сетевыми протоколами, выбирая их в зависимости от задачи.
1. HTTP/HTTPS & HTTP/2:
Базовые протоколы для REST API и веб-серверов. Использую встроенные модули http/https или фреймворки (Express, Fastify, NestJS). HTTP/2, поддерживаемый нативно с Node.js 8.13+, даёт преимущества в производительности за счёт мультиплексирования.
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('server-key.pem'),
cert: fs.readFileSync('server-cert.pem')
};
const server = https.createServer(options, (req, res) => {
res.writeHead(200);
res.end('Secure connection established');
});
server.listen(443);
2. WebSocket:
Для приложений реального времени (чаты, уведомления, дашборды). Использую библиотеку ws или Socket.IO (которая предоставляет fallback-механизмы и комнаты).
const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', (ws) => {
ws.on('message', (message) => {
// Обработка сообщения и broadcast
wss.clients.forEach((client) => {
if (client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
});
});
3. TCP/UDP:
Для низкоуровневого взаимодействия, например, при работе с кастомными сетевыми устройствами или высокопроизводительными сервисами. Встроенные модули net (TCP) и dgram (UDP).
4. Протоколы для межсервисного взаимодействия (Microservices):
- gRPC: Для высокопроизводительного RPC между сервисами. Использую
@grpc/grpc-jsи Protocol Buffers для определения контрактов. - AMQP (через RabbitMQ): Для асинхронной обработки задач и событийной архитектуры. Библиотека
amqplib. - MQTT: При разработке бэкенда для IoT-устройств. Библиотека
mqtt.
5. Протоколы передачи файлов и почты:
- FTP/SFTP: Для автоматизации загрузки/выгрузки файлов с использованием библиотек типа
ssh2-sftp-client. - SMTP/IMAP: Для отправки почты (Nodemailer) и её обработки.
Выбор протокола зависит от требований: HTTP/WebSocket для клиент-серверного веба, gRPC для внутренних сервисов, MQTT для IoT, TCP/UDP для специфических низкоуровневых задач.