Работа с сетевыми протоколами через Node.js
Работа с сетевыми протоколами через Node.js
81
В Node.js есть множество модулей для работы с различными сетевыми протоколами, такими как HTTP, HTTPS, TCP, UDP и др. Рассмотрим наиболее часто используемые модули.
Модуль http позволяет создавать HTTP-серверы и отправлять HTTP-запросы.
Например, для создания сервера необходимо использовать метод http.createServer(), который возвращает объект сервера для прослушивания определенного порта:
const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!'); }); server.listen(3000,() => { console.log(`Server running at http://localhost:3000/`); });
Модуль https предоставляет возможность создавать защищенные HTTPS-серверы.
Для этого нужно генерировать SSL-сертификат:
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.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World!'); }); server.listen(3000,() => { console.log(`Server running at https://localhost:3000/`); });
Модуль net используется для создания TCP-серверов и TCP-клиентов.
Например, для создания TCP-сервера нужно использовать метод net.createServer():
const net = require('net'); const server = net.createServer((socket) => { socket.write('Echo server\r\n'); socket.pipe(socket); }); server.listen(1337, '127.0.0.1',() => { console.log(`Server running at tcp://127.0.0.1:1337/`); });
Модуль dgram используется для работы с UDP-сокетами.
Например, для создания UDP-сервера можно использовать метод dgram.createSocket():
const dgram = require('dgram'); const server = dgram.createSocket('udp4'); server.on('listening', () => { const address = server.address(); console.log(`Server listening ${address.address}:${address.port}`); }); server.on('message', (msg, remoteInfo) => { console.log(`Message received from ${remoteInfo.address}:${remoteInfo.port}: ${msg}`); }); server.bind(1234);
Таким образом, Node.js предоставляет мощное API для работы с сетевыми протоколами, что позволяет создавать как простые, так и сложные приложения.
March 25, 2023