Présence de l'utilisateur Dans une salle de chat (discussion se mis à jour par vote simple requise)

StackOverflow https://stackoverflow.com/questions/705241

Question

Nous avons mis en place une fonctionnalité simple forum de discussion Rails à l'aide des mises à jour simples Ajax. Maintenant, dans chaque salle de chat un message appartient à l'utilisateur particulier. Nous voulons montrer la liste des utilisateurs (quelque chose comme la présence des utilisateurs). S'il vous plaît suggérer des façons. Nous n'utilisons Jabber, XMPP, etc.

Le modèle Chatroom est:

class ChatRoom < ActiveRecord::Base
  validates_presence_of :title

  has_many :messages,:foreign_key=> "chat_room_id"
  has_many :stories,:foreign_key=>"chat_room_id"
  has_many :topics,:foreign_key=>"chat_room_id"


end

Les messages sont envoyés les chats de chaque utilisateur.

Le modèle de message est:

class Message < ActiveRecord::Base
  belongs_to :user
end

Le modèle de l'utilisateur est:

class User < ActiveRecord::Base
  acts_as_authentic :crypto_provider => Authlogic::CryptoProviders::BCrypt
  validates_presence_of :nick
  validates_uniqueness_of :nick
  has_many :questions
  end

S'il vous plaît suggérer des façons

Était-ce utile?

La solution

Pour garder une trace dont les utilisateurs sont dans quelle pièce, vous pouvez configurer une relation HABTM entre les modèles chatroom et l'utilisateur. Et, vous pouvez ajouter une colonne de last_poll_datetime au modèle de l'utilisateur pour suivre la dernière fois que l'utilisateur sondé pour les messages (plus sur cette partie dans une minute).

Pour afficher une liste de tous les utilisateurs dans une pièce donnée, utilisez votre jointure HABTM table, ChatRooms_Users. Vous allez insérer / supprimer de ce tableau chaque fois qu'un utilisateur rejoint ou quitte une pièce.

Si vous voulez expireront les utilisateurs qui ferment leur navigateur au lieu de cliquer sur « salle de congé », mis en place une tâche balayeuse pour exécuter chaque minute qui recherche les utilisateurs last_poll_datetime plus d'une minute et enlever leurs rangs des ChatRooms_Users table de jointure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top