롱폴링 예제

동일한 클라이언트의 여러 HTTP 요청이 동시에 비행할 수 있기 때문에 신뢰할 수 있는 메시지 순서는 긴 폴링에서 문제가 될 수 있습니다. 예를 들어 클라이언트에 동일한 서버 리소스를 사용하는 두 개의 브라우저 탭이 열려 있고 클라이언트 측 응용 프로그램이 localStorage 또는 IndexedDb와 같은 로컬 저장소에 데이터를 유지하는 경우 중복 데이터가 보다 더 많이 기록되지 않는다는 기본 제공 보장은 없습니다. 일단. 클라이언트 구현에서 의도적으로든 코드의 버그로 인해 한 번에 두 개 이상의 연결을 사용하는 경우에도 이러한 일이 발생할 수 있습니다. 1995년, 넷스케이프 커뮤니케이션즈는 브렌던 아이히를 고용하여 넷스케이프 네비게이터에서 스크립팅 기능을 구현했으며, 10일 동안 자바스크립트 언어가 탄생했습니다. 언어로서의 기능은 처음에는 현대 자바스크립트에 비해 매우 제한적이었으며 브라우저의 문서 개체 모델(DOM)과 상호 작용하는 능력은 훨씬 더 제한적이었습니다. JavaScript는 문서 사용 기능을 보강하기 위한 제한된 향상된 기능, 브라우저 내 양식 유효성 검사 및 기존 문서에 동적 HTML을 가볍게 삽입하는 데 주로 유용했습니다. 이 예제는 쿠키를 기반으로 합니다. 첫 번째 요청에서는 lastUpdate라는 쿠키를 만들고 클라이언트의 브라우저로 보냅니다.

이 쿠키는 브라우저로 전송된 file.txt의 마지막 파일 수정 시간을 저장합니다. 나는 당신을 위해 두 가지 예를 만들었습니다. 이 하위 항목의 끝에 두 예제의 .zip 파일을 다운로드할 수 있습니다. 이 지퍼에는 위의 두 가지 예가 모두 있습니다. 두 번째 예제를 사용하려면 먼저 .sql 파일을 MYSQL 데이터베이스로 가져온 다음 호스트 이름, 사용자 이름, 암호 및 데이터베이스로 config.php를 변경합니다. jquery를 사용하여 긴 폴링의 클라이언트 측 구현을 설명하는 많은 문서가 있습니다. 일곱 번째 옥타브에서이 문서는 전형적인 예입니다 무엇을 제공합니다 : AJAX (jQuery) 및 PHP와 긴 폴링의 매우 간단한 데모. 긴 폴링은 거의 «실시간» 응용 프로그램을 가능하게 합니다. 클라이언트는 X초/분마다 새 데이터를 요청하지 않으며, 새 데이터(푸시 알림 스타일)가 있을 때 클라이언트가 새 데이터를 배달받습니다. 이것은 https://github.com/lincolnbrito/php-ajax-long-polling 개선, 청소 및 문서화 된 포크입니다! 큰 감사, 사람. 배경: 클라이언트는 어떤 일이 발생하거나 사용할 수 있을 때 웹 서버에서 알림을 받고 싶어합니다(예: 몇 초마다 돌아가서 물어볼 필요 없이 새 이메일이 도착할 때 알려주세요.) 서버 전송 이벤트를 사용할 수 있는 응용 프로그램의 몇 가지 간단한 예: GitHub의 pubsub_example 리포지토리에는 이 문서에서 설명하는 아이디어를 구현하는 전체 프로젝트가 있습니다.

이 프로젝트는 직접 시도하려는 경우 OpenShift에 직접 배포할 수 있습니다. 당신은 또한 http://pubsub.example.oddbit.com/ 온라인으로 그것을 밖으로 시도 할 수 있습니다. 전자 메일에 회신하는 중이었는데(갑자기) 그 사람이 다른 후속 조치를 보냈다는 알림을 받은 적이 있습니까? 이는 서버 푸시 또는 혜성 기술이라고도 하는 완벽한 폴링 예입니다. 진행 은 진행 상황을 낳고, 자연스럽게 개발자는 자신의 기능에 «실시간»측면의 더 많은 응용 프로그램을 구현하는 방법을 모색하기 시작했다. 웹 기반 채팅방과 간단한 게임은 당시의 초기 사례였습니다. HTTP 프로토콜은 이러한 종류의 사용 사례를 구현하기가 매우 어려웠으며, 서버가 새 데이터를 사용할 수 있게 될 때마다 사전에 사용자에게 알릴 방법이 없기 때문에 응용 프로그램이 반복적으로 새 데이터를 확인하기 위해 서버를 폴링하는 것을 보는 것이 일반적이었습니다. 이 방법의 극단적인 비효율성을 감안할 때 HTTP 요청 응답 모델을 더 많은 실시간 매체로 조작하는 창의적인 방법이 등장하기 시작했습니다.