Основная проблема с присутствием, как отмечают @davin и @jcolebrand в комментариях, заключается в том, что нельзя полагаться только на соединения. Сетевые устройства могут удерживать подключения после того, как пользователь ушел со страницы. Итак, вам нужно что-то еще для подтверждения присутствия пользователей.
Это то, для чего мы добавили поддержку в Pusher , и мы делаем это, используя нечто, называемое Каналы присутствия .
Мы управляем этим с помощью уникального идентификатора пользователя, который вы (разработчик) должны предоставить при подключении пользователя, в сочетании с уникальным идентификатором сокета, который идентифицирует соединение. Поскольку этот уникальный идентификатор пользователя может встречаться в списке участников присутствия только один раз, это означает, что этот пользователь будет указан в списке только один раз, даже если у него открыто несколько соединений, и, следовательно, несколько соединений сокетов.
Та же идея применима и к HTTP-соединениям.
Общий подход для этого заключается в использовании сеанса для однозначной идентификации пользователя. Таким образом, даже если они просто «Гость», вы все равно можете идентифицировать их, если они разрешают использование файлов cookie.
Таким образом, количество пользователей в вашей системе должно быть только максимальным при количестве активных сеансов, которые вы запускаете на своем сервере.
Надеюсь, это поможет. Дайте мне знать, если вы хотите что-то разъяснить.