Свойство server.connections
было доступно в ранних версиях Node.js для HTTP-сервера (net.Server
) и позволяло получить текущее количество активных подключений:
const server = require('http').createServer();
console.log(server.connections); // Устаревший способ
Неточное название: Свойство называлось connections
, но фактически возвращало количество подключений, что вводило в заблуждение.
Проблемы с производительностью: Реализация этого свойства требовала дополнительных вычислений и могла негативно влиять на производительность.
Несоответствие современным стандартам: В новых версиях Node.js перешли к более явным и эффективным способам получения метрик сервера.
Унификация API: Node.js движется в сторону унификации API, и подобные "магические" свойства не соответствуют этой философии.
const server = require('http').createServer();
let connections = 0;
server.on('connection', (socket) => {
connections++;
socket.on('close', () => connections--);
});
// Получение текущего количества подключений
console.log(connections);
const server = require('net').createServer();
server.getConnections((err, count) => {
if (err) throw err;
console.log('Active connections:', count);
});
Для production-окружения лучше использовать специализированные решения:
const http = require('http');
const server = http.createServer((req, res) => {
res.end('Hello World');
});
// Трекинг подключений
let activeConnections = 0;
server.on('connection', (socket) => {
activeConnections++;
socket.on('close', () => {
activeConnections--;
});
});
// Эндпоинт для проверки
server.on('request', (req, res) => {
if (req.url === '/status') {
res.end(`Active connections: ${activeConnections}`);
}
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000');
});
server.connections
устарел из-за проблем с дизайном API и производительностью.server.getConnections()
(для net.Server)