Нужно сделать количество пользователей онлайн. У меня не получается

// Подключение модулей
let express = require('express');
let app = express();
let server = require('http').createServer(app);
let io = require('socket.io').listen(server);
// Порт
server.listen(3000);
// Главная страница
app.get('/', function(request, respons) {
    respons.sendFile(__dirname + '/index.html');
});
// Массив подключений
connections = [];
// Массив пользователей
users = [];
io.sockets.on('connection', function(socket) {
    console.log("Подключение");
    connections.push(socket);
    // Пользователей онлайн
    users.push(connections);
    for (let i = 1; i < users.length; i++) {
        document.getElementById('users-online').innerHTML = 'Онлайн: ' + i;
    }
    // Удаление подключения
    socket.on('disconnect', function(data, data2) {
        connections.splice(connections.indexOf(socket), 1);
        console.log("Отключение");
    });
    // Сообщения пользователей
    socket.on('send mess', function(data) {
        io.sockets.emit('add mess', {
            mess: data.mess,
            name: data.name,
            additionalClass: data.additionalClass
        });
    });
    // Сообщения в команде
    socket.on('send mess2', function(data2) {
        io.sockets.emit('add mess2', {
            mess2: data2.mess,
            name2: data2.name2,
            additionalClass2: data2.additionalClass2
        });
    });
});

Вот эта штука не работает и не будет работать. Этот код выполняется на сервере и никакого document на сервере нет.

Первый вариант - изменить этот блок

app.get('/', function(request, respons) {
    respons.sendFile(__dirname + '/index.html');
});

Вместо статического html высылать html в котором уже прописано текущее значение пользователей. Правда, значение будет статическим. Т.е. корректным только на тот момент когда пользователь загрузил страницу. Для некоторых задач этого будет достаточно. Это делается через pug темплейты. Вариант - считать текст html и заменить регуляркой одно значение.

Второй вариант - каждый раз при присоединении пользователя слать всем пользователям сообщения о количестве пользователей через websocket и обрабатывать на клиенте. Тогда это число будет динамическим. Если ты делаешь тестовое - скорее всего это то что от тебя хотят.

  1. И при отсоединении.
  2. Строго говоря, активные соединения/пользователей ты держишь в массиве connections. А вот в users ты считаешь непонятно что. Просто при каждом новом соединении ещё раз добавляешь элемент со ссылкой на конекшены. Но никогда оттуда не удаляешь, и все его элементы ссылаются на один и тот же массив соединений.
1 Симпатия