Проверьте, если пользователь не в сети - PullRequest
4 голосов
/ 12 апреля 2011

У меня есть онлайн-игра.Я хочу показать, сколько пользователей онлайн.Проблема в том, чтобы знать, когда пользователь не в сети.Есть ли способ выполнить проверку файлов cookie сеансов, чтобы подтвердить, был ли закрыт сеанс с посредником?Я думал о том, чтобы просто установить тайм-аут на сервере, который запускает скрипт, который подсчитывает, сколько файлов cookie сеанса присутствует, но как я могу проверить, относится ли файл cookie сеанса к кому-то, кто вошел в систему, а не просто к посетителю?

Как вы справились с этим?

1) Я не хочу полагаться на сценарий, запускаемый кнопкой выхода из системы, поскольку никто никогда не выходит из системы ... люди просто закрывают браузер.

2) О метках времени и регистрации активности?Поскольку в моей игре пользователи взаимодействуют с SVG (не перемещаясь по страницам), они генерируют огромное количество кликов.Создание запроса для каждого клика для каждого из них, обновляющего запись, будет очень дорогим.

Ответы [ 2 ]

4 голосов
/ 12 апреля 2011

Когда пользователь взаимодействует с сайтом, установите время его последней активности.

Если он дольше 30 минут или около того, вы можете предположить, что он не в сети.

Вы также можете явно отключить кого-либо, когда он нажмет logout .

Однако ваш случай немного отличается. Вы можете использовать сценарий в стиле heartbeat .

Пока они находятся на странице, используйте setInterval(), чтобы продлить срок действия до максимального диапазона (в случае, если пользователь оставляет окно своего браузера открытым часами).

2 голосов
/ 12 апреля 2011

Поскольку ваш код выполняется при загрузке страницы, вы не можете проверить, закрыл ли пользователь свой браузер или нет.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...