Andrey Suslov
октябрь 2016.
59205

Почему счётчик ВКонтакте, который отображает время ухода пользователя из сети, всегда такой неправильный?

Ответить
Ответить
Комментировать
0
Подписаться
8
7 ответов
Поделиться

При использовании браузера понятие онлайна весьма условное, т.к. протокол HTTP основан на транзакциях, а не на постоянном соединении, как протоколы большинства мессенджеров. Браузер пользователя запросил страницу, сервер её сгенерил и отдал, одновременно поимев возможность куда-нибудь залогировать этот факт, и всё. После этого на стороне сервера нет никакой [достаточно надёжной для использования в продакшене] технической возможности понять, открыта ли всё ещё у пользователя эта страница или уже нет. В особенности невозможно по-нормальному отловить момент закрытия единственной вкладки с сайтом и отправить в этот момент запрос про оффлайн.

Поэтому традиционно в вебе считается, что пользователь онлайн какое-то определённое время с момента загрузки последней страницы. У ВКонтакте это время равно 15 минутам, при этом last seen - это то самое время последней загрузки страницы сайта (возможно, шлются ещё какие-то периодические запросы в фоне) или запроса activity.online при использовании приложения. Именно из-за этого получается так, что пользователь был онлайн, а потом ВНЕЗАПНО стал "заходил 15 минут назад". Last seen может быть меньше 15 минут назад в двух случаях:
а) была нажата кнопка "выход" на сайте
б) был отправлен запрос API activity.offline, например, приложенька для Android в него точно умеет О покупках в интернете Что самое дорогое и необычное продавали на eBay?Какие есть лайфхаки, чтобы выгодно совершать покупки в интернете?Можно ли на AliExpress купить не поддельные iPhone или другие известные бренды?Спросите эксперта

Надеюсь, удовлетворил ваше любопытство.

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

Если нажимать на кнопку "Выйти", то человек сразу же из сети пропадет.

Вконтакте поставила ограничение на 15 минут, потому что многие пользователи выходят из сети буквально на 5 минут, а потом возвращаются обратно, и ставить статус оффлайн в таком случае не совсем правильно.

Показать ещё 4 ответа
Ответить