gpt4 book ai didi

ruby-on-rails - 聊天室中的用户状态(聊天通过简单的轮询得到更新)

转载 作者:行者123 更新时间:2023-12-01 00:07:35 25 4
gpt4 key购买 nike

我们使用简单的 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

用户模型是:
class User < ActiveRecord::Base
acts_as_authentic :crypto_provider => Authlogic::CryptoProviders::BCrypt
validates_presence_of :nick
validates_uniqueness_of :nick
has_many :questions
end

请建议方法

最佳答案

要跟踪哪些用户在哪个房间,您可以在 ChatRoom 和 User 模型之间设置 HABTM 关系。并且,您可以向 User 模型添加一个 last_poll_datetime 列来跟踪用户上次轮询消息的时间(稍后将详细介绍这一部分)。

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

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

关于ruby-on-rails - 聊天室中的用户状态(聊天通过简单的轮询得到更新),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/705241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com