当前位置:  开发笔记 > 前端 > 正文

用户状态在聊天室中(通过简单轮询更新聊天)

如何解决《用户状态在聊天室中(通过简单轮询更新聊天)》经验,为你挑选了1个好方法。

我们使用简单的Ajax更新在Rails中实现了一个简单的聊天室功能.现在,在每个聊天室中,消息属于特定用户.我们想要显示用户列表(类似用户在场).请提出建议.我们没有使用Jabber,XMPP等.

聊天室模型是:

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

消息是每个用户发送的聊天记录.

消息模型是:

class Message < ActiveRecord::Base
  belongs_to :user
end

USer模型是:

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

请提出建议



1> Gabe Hollomb..:

要跟踪哪个用户在哪个房间,您可以在ChatRoom和用户模型之间设置HABTM关系.并且,您可以将last_poll_datetime列添加到User模型,以跟踪用户上次查询消息的时间(一分钟内更多关于此部分).

要显示给定房间中所有用户的列表,请使用您的HABTM连接表ChatRooms_Users.每当用户加入或离开房间时,您都将从此表中插入/删除.

如果您希望关闭浏览器而不是单击"离开房间"的用户过期,请设置清扫任务,以便每隔一分钟运行一次查找last_poll_datetime超过一分钟的用户,并从ChatRooms_Users连接表中删除他们的行.

推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有