JavaScript

Счетчик пользователей онлайн

Здравствуйте. Вопрос для программистов. У меня есть сайт http://blogifelse.ru
Как сделать счетчик пользователей онлайн. Онлайн имеется ввиду в данный момент. Может есть какие нибудь решения на javascript или php?
Александр
Александр
320
Готового решения не скажу, но вот пара универсальных советов на подумать.
Если мы говорим о стандартном HTTP сервере, то протокол не подразумевает хранения информации об активном пользователе. Задача сервера - слушать входящие запросы, отвечать на них - и тут же про них забывать. Пользователь производит запросы к серверу при запросе страниц и файлов в коде страницы. Также запросы можно выполнять через Ajax. Однако это в любом случае, не долговременные сессии, а короткие, исчисляемые миллисекундами. Можно придумать множество костыльных решений, когда поднимается ещё один вечно работающий сервер, которому HTTP сервер передаёт информацию о подключении, и тот хранит его, допустим, в течение минуты. При этом находящийся на сайте пользователь через каждые 30 секунд отправляет "keep-alive" Ajax запросы для "подогревания" сессии. В ответ на эти запросы мы как раз и можем получать данные о текущих пользователях онлайн, записывая в нужное место страницы.

Однако есть более стандартное и современное решение: протокол WebSocket. Для этого на сервере нужно поднять WebSocket сервер и слушать входящие соединения. Я такой несколько лет назад писал сам на PHP, но, уверен, уже есть готовые решения, нужно просто поискать. Также в браузере создаётся соединение через
var socket = new WebSocket('ws://your.domain/ws');
и через этот объект сервер спокойно следит за всеми подключенными пользователями, и отдаёт им актуальную информацию о цифре в счётчике. Некая простая реализация чата.
У меня есть реализация таких сервера и клиента на NodeJS на github, могу поделиться при запросе.
ВН
Владимир Нагаев
1 415
Лучший ответ
У яндекс метрики был готовый информер, вродекаг.
Если показывать визиты не надо, а только считать - то тем более ЯМ.
Александр Кучерявый Я плохо знаком с ЯМ, но что-то мне подсказывает, что они немного о другом. Задача подобных сервисов в накоплении и хранении статистики по событиям. Если мы будем кидать события в базу каждые 30-60 секунд и так же запрашивать их выгрузку, то это кажется не самой лучшей затеей для такой задачи. Или каким образом это работает?
а что лайвинтернет уже умер?))
по моему нет- что мешает использовать его?))
Там как раз такое предусмотрено
Artash Martirosyan
Artash Martirosyan
86 134