Как чат Google / Facebook узнает, какие пользователи вошли в систему? - PullRequest
1 голос
/ 11 декабря 2011

По общему признанию, это немного ужасный вопрос, но мои результаты поиска забиты множеством проблем с конфиденциальностью: на высоком уровне, кто-то может объяснить мне, как я могу определить, какие пользователи в настоящее время вошли на мой сайт ? (Я собираюсь создать клон Facebook для школьного проекта, если это поможет сформулировать вопрос.)

Ответы [ 6 ]

1 голос
/ 11 декабря 2011

Ну, что происходит, когда пользователи заходят на ваш сайт?Сеанс создается на стороне сервера, связывая будущие запросы пользователей с логином.Это должно произойти, потому что сам HTTP не имеет состояния - то есть он не будет знать, что человек, запрашивающий страницу своего профиля, тот же, что только что прошел проверку подлинности, если только клиент не отправит обратно некоторую информацию, обычно cookie илиреже в настоящее время - идентификатор сеанса в URL.

Это означает, что где-то на вашем сервере у вас уже есть информация о том, сколько людей вошли в систему (т.е. имеют текущий сеанс).Если вы используете веб-фреймворк, возможно, вам придется изучить детали управления сессиями.Если нет, то вы уже решили проблему;просто выясните, где хранятся сеансы и вуаля, вы знаете, какие пользователи онлайн.

Конечно, вы не знаете, ушел ли пользователь без выхода из системы, но эту проблему нелегко решить;Системы управления сеансами обычно прекращают сеанс после определенного периода бездействия (т. е. ваш сервер в последнее время не получал никаких запросов), поэтому вы можете просто использовать все, что эта система говорит вам для начала.Если вы хотите чего-то большего, вы можете самостоятельно отслеживать последнее действие и решить, что пользователь неактивен, если это действие прошло более n минут в прошлом.

1 голос
/ 11 декабря 2011

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

1 голос
/ 11 декабря 2011

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

Альтернатива: опрашивать AJAX каждые 10 секунд на наличие новых сообщений и просто сообщать, что пользователь исчез, если в течение 15 секунд не было опроса.

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

1 голос
/ 11 декабря 2011

Фактический ответ будет зависеть от того, какие платформы вы используете для создания своего сайта, но в общих чертах браузеры могут поддерживать открытое соединение с веб-сервером, что обеспечивает двунаправленную связь.Иногда его называют COMET.

Facebook и т. Д., Затем он может отслеживать, какие открытые соединения он имеет, и какой пользователь вошел в систему, а также установить соединение (используя ту же технологию сеанса, которую он использует для поддержания состояния пользователя в разных запросах).).

0 голосов
/ 11 декабря 2011

Самый простой способ - по IP.

Каждый запрос на ваш сайт будет запрашиваться по IP-адресу. Ваш основной (индексный) файл должен иметь логику, чтобы хранить эту информацию где-либо или отображать ее для вас.

Это самый простой способ узнать людей, которые сейчас просматривают ваш сайт.

0 голосов
/ 11 декабря 2011

Когда пользователь входит на ваш сайт, вы регистрируете его активность в базе данных. Затем вы приступаете к обнаружению их активности на сайте. Если они простаивали в течение определенного времени (например, их последнее действие было 10 или 15 минут назад), вы можете предположить, что они не в сети.

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