2011-01-04 3 views
1

저는 codeigniter 환경에 있는데 이런 식으로하고 싶습니다. O-wner 한 명과 C-lients가있는 대화방이 있습니다. 이것은 내가 쓰려고하는 것입니다.Ajax 응답 동기화

1) C가 방에 합류합니다.

2) 준비가되면 모든 고사는 모든 클라이언트가 신호 이전 아약스 reponses가 전송됩니다,

3) C는 고사를 준비하는 모든 기다립니다 아약스 요청을 보내는 "준비"링크를 클릭

4) C는 모든 클라이언트에 대해 동일한 순간에 있어야 응답() 그들이 - 무슨 - - 할 일 :

하고 시작을받을 때를 추적 할 수있는 쉬운 방법이 있나요 내가 동시에 그들을 모두 알릴 수 있도록 연결된 모든 클라이언트들?

은 지금 나는 이것이 아니다 생각 나는

while ($this -> MyModel -> waitingQueue) { 
sleep(1) } 
return "ok"; 

이 나는이

$.ajax({ 
url: 'myurl.php', 
success: function() { doStuff(); } 
}); 

같은 내 hypotethic 파일 myurl.php의 코드를 3 단계에 붙어있어 내 모델 변수 "waitingQueue"를 변경할 때 모든 클라이언트가 동일한 인스턴스에서 응답을 수신하는지 여부를 제어 할 수 없기 때문에 좋은 접근 방식입니다.

감사합니다.

답변

0

나는 setInterval()을 자바 스크립트에서 사용하는 것이 좋습니다. 서버 상태를 계속 확인할 수 있습니다.

나는 당신이 당신의 클라이언트를 간단하게 동기화 할 수 있다고 생각하지 않는다. 동시에 서버에서 응답을받지 못합니다.

모든 클라이언트의 시계를 동기화하고 일괄 적으로 정리하면 클라이언트 셸이 이벤트를 트리거 할 때 좋은 기회를 얻을 수 있습니다.

... 그리고 clearInterval()

+0

답장을 보내 주셔서 감사합니다. 모든 클라이언트가 집안의 같은 방에 있다고 상상해보십시오. (앱의 목적입니다.) 시간을 동기화하지 않아도 동시에 답변을 받게 될 것입니다 (아마도 밀리 초 정도 될 것입니다) .. –

+0

맞아, 일할 수있어. 모두가 동일한 브라우저 및 유사한 시스템을 사용한다면. – helle

1
당신은 서버의 모든 클라이언트로부터 정기적 아약스 점검과의 동기화를 모방하려고 할 수

을 잊지 마세요. jQuery.queue 함수를 확인하고 SetInterval을 사용하여 큐 폴링을 시작한 다음 해당 큐의 검사를 포함하는 함수를 푸시합니다 (이 함수는 큐를 플러시합니다).

한 걸음 더 나아가려면 'Comet'과 HTTP 연결을 통해 HTTP에서 PUSH 동작을 시도해야하지만 간단하지는 않습니다 :-) 적어도 네트워크, 서버, 사람 (예 : 인트라넷)에 연결하면 사람들이 쉽게 제어 할 수 있습니다.

아니면 닫힌 프로젝트 google 파도에서 문서를 확인할 수 있습니다.