2013-10-30 2 views
0

사람들이 의견을 제출할 수있는 사이트가 있습니다. 주석은 서버의 COMMENTS 파일에 기록됩니다. 별도의 페이지에서 Div에 파일을 아약스로드하고 주석을 볼 수 있습니다.서버 파일에서 HTML 요소를 계속 업데이트합니다.

지금 내가 원하는 것은 Div가 "라이브"로 의견을 표시하는 것입니다. Div를 읽고있는 동안 들어오는 새로운 코멘트는 자동으로 하단에 표시됩니다.

그래서 지속적으로 열리는 Ajax-load가 필요합니다. PHP 스크립트가 COMMENTS 파일의 타임 스탬프를 지속적으로 모니터하고 타임 스탬프가 변경되면 다시 클라이언트에 복사합니다.

이 작업을 수행하는 더 좋은 방법이 있을지 또는 일부 작업이 이미 완료되었을 수 있는지 궁금합니다.

어떤 아이디어 주셔서 감사합니다.

+0

그럼 지금까지 시도한 것은 무엇입니까? 정말 간단한 해결책은'$ .ajax()'를 사용하여 데이터를 얻은 다음 setTimeout()을 사용하여 60 초 후에 Ajax 성공 처리기에서 해당 함수를 다시 호출하고 반복하는 것입니다. – nnnnnn

+0

ajax 연속 또는 긴 폴링을 사용할 수도 있고 서버 소켓, 서버 전송 이벤트 또는 "영원한 프레임"을 사용할 수도 있습니다 –

답변

3

당신은 하나 많은 자원 뭔가를해야 할거야 또는 당신이해야 할거야 진정한 실시간 업데이트를 위해 node.js 및 socket.io와 같은 도구에 익숙해집니다.

참고 :
http://www.nodejs.org
http://www.socket.io
http://net.tutsplus.com/tutorials/javascript-ajax/using-node-js-and-websockets-to-build-a-chat-service/

+1

소켓의 주요 이점은 서버가 클라이언트에 업데이트를 푸시 할 수 있고, 새로운 코멘트가 도착했을 때 서버가 반복적으로 서버에 요청하도록 강제하지 않고 새로운 의견이 T와 마지막 요청 사이의 어떤 지점에 추가되었을 수 있습니다. – Barney

+0

정확함. 반응이 빠른 기능 옆에 서버 리소스를 저장합니다. – ReQwire

+0

서버 리소스에 신경 쓰지 마십시오! 누군가가 사용자를 생각하지 않겠습니까? ;) – Barney

0

당신이 할 수있는 타이머 이벤트는 새 코멘트를 확인하고 업데이트 한 경우 게시 설정 ...

timer = setInterval(function() 
    { $.ajax("getComments.php") 
      .done(function(data) { 
       ("#comments").innerHTML = data; 
      }) 
    }, seconds*1000); 
0

당신/당신의 서버에 Node.js를 설치하고 @ReQwire에서 알 수 있듯이 소켓을 구현하지 않을 수없는 경우의 부담을 줄일 수 있습니다 사용자가 별도의 리소스 (예 : /comments?article=articleUID&since=timestamp)를 폴링하여 약간 타임 스탬프를 지정합니다 (서버가 제공 한 마지막 타임 스탬프로 타임 스탬프가 결정됩니다. 그렇지 않으면 서버와 사용자의 시간 구성 사이에 시간차가 생길 수 있습니다). 반환 :이 서비스는 다음을 보게됩니다 comments 파일은 해당 기사에 대한 파일이며 timestamp 이후에 수신 된 댓글 만 반환합니다. 이렇게하면 패킷의 가중치가 줄어들어 빈 응답이나 새 콘텐츠 만 수신하게됩니다.

관련 문제