2011-07-03 6 views
-1

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

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

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

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

благодаря Рик

ответ

1

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

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

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

+0

Причина, по которой вы не можете сделать это «мгновенно», заключается в том, что HTTP (S) не имеет статуса. Таким образом, в любой момент сервер может знать только о последнем запросе от любого данного клиента. Это правильное решение. – Midwire

0

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

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

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

+0

Не совсем ответили на вопрос. Как я могу точно отслеживать, кто сейчас находится на сайте, и мгновенно удалять из списка, когда они уходят? Я могу сделать чат без проблем с фей. спасибо в любом случае – rick