실시간 알림을 지원하는 Rails/Javascript 애플리케이션을 구축 중입니다. 자바 스크립트는 다음과 같습니다레일 : 응답 할 데이터가있을 때까지 sleep (스트리밍 + 멀티 스레딩)
var chat;
$(document).ready(function(){
chat = $('#chat');
chat.append('mmm');
(function poll(){
$.ajax({ url: "http://localhost:3000/get_messages", success: function(data){
//Update your dashboard gauge
chat.append(data);
}, dataType: "json", complete: poll, timeout: 30000 });
})();
});
경로 : 여기
match 'get_messages', to: 'real_time_notifs#get_messages', :via => :get
컨트롤러의 방법입니다 :
def get_messages
# sleep ??? will it stop the whole application?
render :json => ['message body']
end
나는 자바 스크립트에 대한 표시 일 (있는 경우에만 답변을 받게 될 것이라고합니다 예를 들어, 데이터베이스 테이블에 새 메시지가 나타남) 전체 애플리케이션을 중지하지 않아도됩니다. get_messages
방법을 구성하는 방법을 제안 해 주시겠습니까?
기다리는 동안 나머지 응용 프로그램을 차단하지 않는 솔루션이 필요합니다.
SSE는 훌륭하지만 문제가 있습니다. 우리는 여전히 동작이있는 컨트롤러가 필요합니다. 여기에는 스트림에 쓰는 루프가 있습니다. 이 글은 PostgreSQL에 의해서만 지원되는'connection.raw_connection.wait_for_notify'를 기반으로하는 시작/정지 메커니즘에 의해 제어됩니다. 질문은 :이 메커니즘을'ActiveSupport :: Notifications.subscribe'로 대체 할 수 있을지 어떨지입니다. – Paul