인터넷 검색을 실시간으로 페이스 북과 같이 보내야하는 웹 사이트가 있습니다. 인터넷 검색을 더 많이 수행 한 후 푸시 앤 풀 기술에 관한 많은 설명서를 발견했습니다. 이 문서에서 Ajax 또는 소켓을 사용하여 구현하는 방법을 발견했습니다. 내 경우에 무엇을 사용하는 것이 가장 좋은지 그리고 자바 스크립트 나 jquery와 PHP를 사용하여 코딩하는 방법을 알아야한다.Ajax 또는 Socket을 사용하여 기술을 밀고 당길 수 있습니다.
답변
jQuery를 사용하여 긴 폴링 기법을 적용하면됩니다.
소켓은 아직 어디에서나 지원되지 않으며 서버가 작동하려면 수신 소켓을 열어야합니다.
귀하의 사례를 자세히 알지 못하면 귀하의 케이스에서 가장 유용한 것을 말할 수 없습니다.
대부분의 경우 클라이언트가 1 ~ 2 초마다 서버에 확인하여 새 메시지가 있는지 묻는 것으로 충분합니다. 나는 모든 웹 서버에서 구성 변경없이 그리고 AJAX를 지원하는 모든 브라우저, 심지어 오래된 서버에서도 작동하기 때문에 대부분 소켓에 비해 선호합니다.
모든 클라이언트가 서버에 열린 소켓을 필요로하기 때문에 클라이언트가 거의없고 실제로 실시간을 원할 경우 웹 소켓을 사용할 수 있습니다. 다음과 같은 PHP 구현이 있습니다. http://code.google.com/p/phpwebsocket/
나의 케이스는 페이스 북과 Stackoverflow와 동일하다. 내 질문에 대답했을 때 내 알림을 보냈는데, 나는 이런 식으로해야하고, 내 웹 사이트에는 그리 많지 않은 사용자가 많을 것으로 예상된다. –
페이스 북과 같이 "무제한 서버 기능"을 갖고 있다면 이전 버전의 브라우저를위한 대체 솔루션이있는 소켓을 선택합니다. 그렇지 않은 경우 사용자에게 실제로 중요한 의미를 부여하기 위해 1 초 또는 그 이하의 지연이 있습니다 (원하는 경우 250ms마다 업데이트를 확인할 수도 있습니다). 그렇다면 소켓을 선택하십시오. 그렇지 않다면 주기적으로 AJAX 요청을 선택하십시오. –
로그인 한 사용자 당 하나의 브라우저 만 열리도록하려면이 긴 폴링 기법을 쉽게 적용 할 수 있습니다. Ajax 호출에 대한
정책 :
- 요청 2 초마다하지 마십시오.
- 그러나 이전 요청에서 응답을받은 지 2 초 후에 만 대기하고 요청하십시오.
- 요청이 12 초 이내에 응답하지 않으면 기다리지 말고 새로운 요청을 보내십시오. 연결이 끊어진 경우입니다. 서버 응답에 대한
정책 : 즉시
가있는 경우 업데이트 응답. 업데이트가 세션에 의존하는지 확인하는 것; (클라이언트 쪽에서 최신 메시지를받은 것과 같은 힌트를 보낼 수 있다면이 두 번째 업데이트 확인 메커니즘을 통해 위에서 설명한대로 단일 브라우저를 열지 못하게 할 수 있습니다.)
그렇지 않으면 sleep() (무한 루프를 사용하지 않고 수면을 사용하지 마십시오) 업데이트가 있는지 확인하십시오. 업데이트가 응답하는 경우; 1 초 동안 다시 잠을 자지 않으면; 총 십초 때까지이 작업을 반복 경과 후 어떤 업데이트에 다시 응답했다
이 정책 (일반적으로 롱 폴링라고도 함), 당신은 부하가 4 %로 95 %로 감소 프로세서 사용을 찾을 수 있습니다을 적용하는 경우 케이스.
희망 사항입니다. 행운을 빌어 요.
답장을 보내 주셔서 감사합니다. 그러나 다른 문제가 발생하여 업데이트를 확인할 수있는 방법이 있습니다. 사용하는 절차는 각 웹 사이트에 페이지가 있습니다. 사용자가 자신의 페이지를 추가, 삭제 또는 업데이트 할 때 페이지 팔로워에게 알림을 보내야합니다. 내 데이터베이스에 알림 저장을위한 테이블이 있습니다. 당신이 말한대로 업데이 트를 얻으려면 나는 업데이 트가 있는지 여부를 확인하기 위해 서버 측에 각 1 초 데이터베이스에 액세스해야합니다. 데이터베이스에 액세스하지 않고 업데이트를 얻을 수있는 또 다른 방법이 있습니까? –
파일 잠금으로 공유 메모리를 시도 할 수 있습니다. 하지만 대부분의 시간 동안 서버 측에서 자고 있고 쿼리를 실행하는 데 몇 초 정도만 깨어있는 상태로 기다리지 않기를 바랍니다. TCP 핸드 쉐이크는 PHP 처리보다 시간이 오래 걸리므로 우리는 각 핸드 쉐이크 (syn-fin) 사이에서 오래 기다리는이 긴 폴링 기법을 사용합니다. –
은 데이터베이스에 액세스하고 있으며 1 초마다 데이터베이스에 많은로드가 발생 했습니까? 1000 사용자가 평균 1000 데이터베이스 액세스/초라고 가정 할 경우 –
- 1. Ajax - 밀고 당기시겠습니까?
- 2. github을 당길 수 없음
- 3. IO :: Socket을 사용하여 소켓을 만들 수 없습니다.
- 4. git : 두 대의 랩톱 컴퓨터가 인터넷을 통해 서로 밀고 당길 수있는 방법
- 5. 어떤 기술을 사용하여 데이터를 저장할 수 있습니까?
- 6. 체크섬 기술을 사용하면 전체 체크섬을 체크섬에서 계산할 수 있습니다.
- 7. Perl에서 IO :: Socket을 사용하여 사용자 입력
- 8. 내비게이션 컨트롤러를 밀고 팝합니까?
- 9. Java에서 socket을 사용하는 방법
- 10. 이메일 템플릿을 저장하기위한 좋은 기술을 찾고 있습니다.
- 11. Ruby Socket을 사용하여 Ruby 응용 프로그램의 성능을 향상시킬 수 있습니까?
- 12. Socket을 사용하여 스트림 할 Android MediaRecorder setOutPutFile()
- 13. socket을 win32에서 사용하는 방법
- 14. javascript 또는 다른 기술을 사용하여 사용자 입력을 기반으로 창 또는 탭에 포커스를 전환 할 수 있습니까?
- 15. 어떤 기술을 선택할 수 있습니까?
- 16. 소켓 또는 일부 다른 기술을 사용하여 항상 실행해야하는 서버 만들기
- 17. 베어 게토 레포에서 다른 케릭터로 당길 수 없습니다
- 18. Github에서 밀고 오류
- 19. AJAX/Reverse AJAX : 폴링 또는 푸시?
- 20. 새 컨트롤러를 밀고 내비게이션 컨트롤러
- 21. 내 기술을 어떻게 평가할 수 있습니까?
- 22. div 콘텐츠 마진 밀고 용기
- 23. UITableViewController를 밀고 데이터를 필터링/다시로드
- 24. 업로드 기술을 사용하여 jpeg를 압축하는 방법이 있습니까?
- 25. 한 노드에서 컨텐트를 당길 때만
- 26. 어떤 SCM 기술을 사용해야합니까? Subversion 또는 Git?
- 27. Ruby 기술을 향상시키기위한 소형 보석 또는 라이브러리?
- 28. UIViewControllers UINavigationController를 사용하여 애니메이션을 밀고 팝합니다. 모달보기를 닫으시겠습니까?
- 29. PHP에서 Socket을 활성화하는 방법은 무엇입니까?
- 30. $ .ajax 응답이 비어 있습니다.
은 실시간으로 긴 풀링을 지원합니다. 어떻게 구현 될 수 있습니까? –