채팅방에서의 사용자 존재 (간단한 폴링으로 채팅 업데이트)
-
22-08-2019 - |
문제
간단한 AJAX 업데이트를 사용하여 레일에서 간단한 대화방 기능을 구현했습니다. 이제 모든 대화방에서 메시지는 특정 사용자에게 속합니다. 사용자 목록 (사용자 존재와 같은)을 보여주고 싶습니다. 방법을 제안하십시오. 우리는 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
방법을 제안하십시오
해결책
어떤 사용자가 어떤 방에 있는지 추적하기 위해 채팅방과 사용자 모델 사이의 HABTM 관계를 설정할 수 있습니다. 또한 사용자 모델에 last_poll_dateTime 열을 추가하여 사용자가 메시지를 위해 마지막으로 여론 조사를 추적 할 수 있습니다 (1 분 안에이 부분에 대해 자세히 설명).
주어진 방에있는 모든 사용자의 목록을 표시하려면 HABTM 조인 테이블, chatrooms_users를 사용하십시오. 사용자가 방을 가입하거나 떠날 때 마다이 테이블에서 삽입/삭제됩니다.
'방으로 떠나기'를 클릭하는 대신 브라우저를 닫는 사용자를 만료하려면 1 분 이상이 지난 1 분 이상 사용자를 찾는 사용자를 찾는 순간마다 스위퍼 작업을 설정하고 Chatrooms_users가 테이블로 가입하십시오.
제휴하지 않습니다 StackOverflow