레일스를 사용하여 기본 채팅 시스템을 구현했습니다. 나는 이것을 위해 Message 모델을 사용하고 있으며 매 X 초마다 새로운 메시지를 서버에 폴링한다. 사용자가 채팅 페이지를 열면 모든 메시지가보기로 렌더링됩니다.아약스 코드 냄새입니까?
if($("#chat").length > 0) {
$.periodic({period: 5000, decay: 1.2, max_period: 60000}, function() {
$.ajax({
url: document.location.href,
dataType: 'script'
});
});
}
내 컨트롤러는 다음과 같습니다 :
def index
@messages = Message.all
respond_to do |format|
format.html # index.html.erb
format.js
end
end
index.js.erb
은 다음과 같습니다
$("#chat li").remove();
<% @messages.each do |msg| %>
$("#chat").append("<li>" + "<%= escape_javascript msg.content %>" + "</li>");
<% end %>
이 아약스 냄새가 나는 또한이 같은 폴링 "작업"을 시작하고있다? JSON을 반환하고 폴링 작업에서 처리해야합니까, 아니면 지금 가지고있는 방식으로 괜찮습니까?
한 번에 많은 정보를 가져 오는 방법으로 마지막 ID를 저장하는 방법과 장소는 어디입니까? 세션에서? – Geo
일반적으로 검색된 마지막 ID는 클라이언트 측 JavaScript에 편리한 변수에 바인딩 된 영구 변수로 저장됩니다. – tadman
이 저장 예를들 수 있습니까? 나는 당신이 의미하는 바가 무엇인가를 편리하게 묶는 것으로 이해하지 못합니다. – Geo