видеть и общаться с вашими в настоящее время онлайн-пользователями на вашем сайте в приложении rails3 - PullRequest
0 голосов
/ 03 июля 2011

У меня есть приложение rails3, и я хочу видеть список тех, кто сейчас в сети.Например, user1, IP-адрес, страна.Затем я хочу иметь возможность открывать чат / push-сообщения для этого пользователя, пока они не покинут мой сайт.

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

Затем я могу поговорить с ними через faye pub / sub.

Кто-нибудь сделал что-то подобное?

спасибо, Рик

Ответы [ 2 ]

1 голос
/ 03 июля 2011

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

Ну, используя HTTP, вы не можете сделать это "мгновенно" в браузере. Почти все решения, которые я вижу, используют технику сердцебиения. Каждое X секунд отправляет запрос из браузера (используя ajax), который сообщает, находится ли пользователь в сети. Если вы не слышали от пользователя в x heartbeats, вы считаете, что пользователь отключен - даже Facebook использует это, он шлет. Я порекомендую вам отменить ваше требование на мгновение, если это действительно не важно.

Другой подход заключается в реализации Flash или Silverlight, чтобы установить сокет-соединение с сервером. Но спрос на сервер высок, и если на вашем сайте много людей, у вас будут проблемы с портами и т. Д.

0 голосов
/ 03 июля 2011

Я думаю, что это не так сильно связано с ruby-on-rails ... но это очень сложно реализовать в HTTP только с языком сценариев. Сервер не знает, закрыл ли пользователь браузер или нет. Сервер выполняет только отправку запрошенных данных страницы пользователю и закрывает соединение.

Вы бы предпочли интегрировать Ajax или Flash, чтобы упростить процесс. Я видел некоторых людей, разрабатывающих программы чата с flash, и кажется, что они работают намного лучше, чем любые другие программы чата, реализованные в AJAX.

Чат очень неблагоприятен в контексте просмотра веб-страниц, так как страница будет перезагружаться, когда пользователь нажимает на ссылку. Если вы думаете о создании приложения, которое поддерживает только функцию чата, вы, вероятно, захотите посмотреть что-то кроме ruby ​​на рельсах. Например, node.js будет хорошим.

...