2012-02-01 2 views
3

최근에 StackOverflow에 대한 질문과 함께 Ajax Long Polling을 사용하는 것이 좋습니다. 지난 며칠 동안이 주제를 연구하고 기본적인 긴 폴링 코드를 작성하려고했지만 그 중 아무 것도 작동하지 않아서 전혀 작동하지 못합니다.Ajax Long Polling

<script language='javascript' type='text/javascript'> 
    var interval=self.setInterval("checkformessages()",4000) 
    function checkformessages() { 
    $('#incomingmessages<?php echo $otherchatuser ?>').load('checkfornewmessages.php?username=<?php echo $username; ?>&otherchatuser=<?php echo $otherchatuser; ?>'); 
    } 
    </script> 

사람이 얼마나 기본 롱 폴링 기능으로이 설정, 또는 그냥 거기에 도착하는 데 필요한 경로에 직접 말해 줄 수 있을까 :

여기 내 기본적인 기능입니다. 어떤 도움이라도 대단히 감사합니다. 감사!

답변

6

일반적으로 (긴 폴링을 사용하지 않을 때) JavaScript 코드는 서버에 요청을 보내고 서버는 정보를 즉시 반환합니다. 그러나 서버가 즉시 말하기 중요하지 않을 수도 있습니다. 귀하의 예 (채팅으로 보입니다)에서, 채팅하는 사람은 checkfornewmessages.php에 요청할 때 아무 말도하지 않았을 수 있습니다. 따라서 자바 스크립트 클라이언트가 서버에 요청한 내용을 묻는 메시지가 표시되면 서버에 실제로 응답 할 내용이 없습니다. 단, "아무것도 말하지 않았습니다."

checkfornewmessages.php 대신에 긴 폴링을 사용하면 "아무 것도 말하지 않았습니다."라는 메시지가 즉시 표시되며 돌아 오는 것이 중요 할 때까지 checkfornewmessages.php에서 다시 돌아올 수 없습니다.

다른 말로하면, 긴 폴링이 작동하려면 재미있는 일은 서버 쪽에서 아마도 checkfornewmessages.php 페이지에서 이루어질 것입니다. 귀하의 자바 스크립트 코드는 checkfornewmessages.php 연락을 제외하고 아무 것도 할 필요가 없으며 응답을 기다립니다.

+0

그래서 저는 chekfornewmessages.php를 호출하는 다른 함수를 작성해야합니다. 그리고 위의 함수처럼 div에 새로운 변경 내용을로드 할 수 있습니다. – Eggo

+2

@Eggo 기본적으로'load'에 대한 호출은'checkfornewmessages.php'에 접속 한 다음'checkfornewmessages.php'가 새로운 메시지와 함께 돌아 오기를 기다리고 멈출 것입니다. 'checkfornewmessages.php' 누군가가 뭔가를 말할 때까지 돌아 오지 않을 것입니다. 이것은 오랜 시간 일 수 있으며 따라서 * long * 폴링이라는 용어가 될 수 있습니다. 누군가 말하면 서버는 즉시 반환됩니다. –

+0

그건 의미가 있습니다. – Eggo

관련 문제