2012-10-11 3 views
2

Node.js를 사용하여 데이터베이스 (이 경우 sqlite)에 대해 일련의 쿼리를 실행한다고 가정합니다. 이러한 쿼리는 처리하는 데 시간이 걸릴 수 있으며 결과가 들어올 때 클라이언트가 업데이트되기를 원합니다. 즉, 결과를 비동기 적으로 클라이언트에 푸시 한 다음 DOM을 업데이트하려고합니다.Node.js에서 데이터베이스 결과를 비동기 적으로 클라이언트에 전달하는 방법이 있습니까?

나는 Faye (또는 다른 혜성 시스템), JavaScript templating 및 아마도 Knockout.js를 사용하여이 작업을 수행 할 수 있다고 생각합니다. 그러나 이미 이런 종류의 작업을 수행하기위한 프레임 워크 또는 도구가 있습니까?

아니면 그냥 잘못된 접근입니까?

답변

4

나는 이전 프로젝트에서 클라이언트에 대한 변경 사항을 쉽게 푸시하는 Socket.IO을 사용했습니다.

서버 코드 :

socket.emit('ranQuery', { info: 'Info From Server!' }); 

클라이언트 코드 : 예는 다음과 같을 것이다

socket.on('ranQuery', function(data) { 
    console.log(data.info); // would output "Info From Server!" 
    // update the DOM with the new information 
} 

자신의 웹 사이트 작업 예제의 많음이있다. 다른 노드 패키지 인 npm install socket.io처럼 설치할 수 있습니다.


업데이트 : 열고 당신은 내가 당신의 접근 방식이 올바른지라고 말하고 싶지만 게시 된 링크를 읽은 후

. Faye에 대해 들어 본 적이 없지만 Socket.IO (서버에서 클라이언트로 객체 보내기)와 비슷한 작업을하는 것으로 보이며 KnockoutJS가 데이터 바인딩을 처리합니다 (모델을 업데이트하면 페이지에서도 업데이트됩니다).). 나는 당신이 어떤 장애를 치면 그걸로 가서 여기에 질문을 올리라고 말할 것입니다.

내가 Socket.IO를 가져온 유일한 이유는 사용 및 문서화가 쉽기 때문입니다. 최근에 AngularJS + Socket.IO를 사용하여 프로젝트를 시작했습니다. 서버의 자주 업데이트를 기반으로 클라이언트 측에서 많은 변경 작업을 수행하려는 경우 AngularJS을 살펴보고 해당 웹 사이트의 예를 둘러보고 싶을 수 있습니다. 당신이, 당신을 위해 작동 Socket.IO와 함께 잘 작동하도록 AngularJS와를 얻기에 정말 좋은 가이드에 대해이 블로그 게시물 (http://briantford.com/blog/angular-socket-io.html)를 방문 것이라고 생각하면

+0

socket.io는 훨씬 가장 일반적인 방법입니다 node.js에서이 작업을 수행하십시오. – smithclay

+0

감사! 이것은 훌륭합니다. 너 락! – Terrence