문제

웹 사이트를 서핑하는 사용자에게 메시지를 전달하는 데 사용될 간단한 알림 서비스를 진행하고 있습니다. 알림을 실시간으로 전송할 필요는 없지만 5 분마다 말하는 것보다 더 자주 발생하면 더 나은 사용자 경험이 될 수 있습니다. 클라이언트로 전송되는 데이터는 크게 크지 않으며 데이터를 검색하기위한 간단한 데이터베이스 쿼리입니다.

주제에 대한 다른 대화를 읽을 때 AJAX 푸시로 인해 서버로드가 더 높아질 수 있습니다. 서버가 더 긴 서버 지연을 견딜 수 있으므로 서버 푸시 알림을 받거나 단순히 투표하는 것이 좋습니다.

푸시 시나리오를 구현하는 것은 그리 어렵지 않으므로 의견이 무엇인지 볼 것이라고 생각했습니다.

당신의 도움을 주셔서 감사합니다.

편집 : 나는 간단한 Ajax 푸시를 살펴보고 이것을 기반으로 간단한 데모를 구현했습니다. 기사 Mike Purvis에 의해. 클라이언트로드는 초기 버전의 경우 약 5K에서 상당히 낮으며 꽤 오랫동안 그 방식을 유지할 것으로 예상됩니다.


귀하의 답변에 감사드립니다. 나는 폴링 솔루션과 함께 가기로 결정했지만 유틸리티 라이브러리 안에 모든 것을 감싸서 나중에 변경하려면 더 쉽습니다.

도움이 되었습니까?

해결책

푸시를 사용하면 서버와 각 클라이언트간에 열린 HTTP 연결이 필요하기 때문에 설문 조사에도 갈 것입니다. Matt B가 언급 한대로 구현하십시오.

폴링에 대한 나의 경험은 바쁜 사이트에서 충분한 여론 조사 간격이 자주있는 경우 웹 서버 로그가 설문 조사 요청으로 신속하게 침수 될 수 있다는 것입니다.

편집 (2017): 나는 당신의 선택이 이제 웹 소켓과 긴 폴링 사이에 있다고 말하고 있습니다 (다른 답변에서 언급). 긴 폴링이 실시간으로 알림을 수신 할 필요가 없다는 질문에 따라 긴 폴링이 올바른 선택 일 수 있으며, 드문 폴링 기간은 구현하기가 매우 쉽고 서버에서 매우 세금을 부과해서는 안됩니다. . Websockets는 시원하고 요즘 많은 응용 프로그램에 대한 훌륭한 선택입니다.하지만이 경우 과잉이 될 수 있습니다.

다른 팁

나는 여기서 아무도 오랫동안 폴링을 언급하지 않았다는 것에 놀랐습니다. 긴 폴링은 긴 기간 (예 : 30-60 초) 동안 개방형 연결을 유지하는 것을 의미하며, 일단 닫히면 다시 개방하고 소켓/연결이 응답을 듣게하는 것을 의미합니다. 이로 인해 연결이 줄어들고 (더 긴 것), 응답이 거의 즉각적이라는 것을 의미합니다 (일부는 새로운 폴링 연결을 기다려야 할 수도 있습니다). NodeJS와 같은 기술과 함께 매우 효율적이고 리소스 라이트 솔루션이 발생하여 모든 주요 브라우저 및 버전에서 100% 브라우저와 호환되며 혜성이나 혜성이나 혜성과 같은 추가 기술이 필요하지 않습니다. 플래시.

나는 이것이 오래된 질문이라는 것을 알고 있지만,이 정보를 제공하는 것이 여전히 유용 할 것이라고 생각했다 :)

확실히 푸시는 훨씬 더 쿨러를 사용하십시오. 간단한 알림을 원한다면 StreamHub 푸시 서버 당신을 위해 무거운 리프팅을합니다. 자신의 Ajax 푸시 기능을 개발하는 것은 매우 까다 롭고 바위가 많은 도로입니다. 모든 브라우저에서 작동하고 방화벽과 프록시를 처리하여 유지 관리 연결 등을 처리해야합니다. 또한, 그것은 비슷한 발자국이 10k 미만의 발자국을 가지고 있으므로 그것이 당신에게 우선 순위 인 경우 적합해야합니다.

둘 다 다른 요구 사항과 다른 시나리오를 다루고 있습니다.

필요한 경우 실시간 업데이트, 온라인 채팅과 마찬가지로 푸시는 필수입니다.

그러나 만약 새로 고침 기간이 큽니다, 귀하의 경우 (5 분)와 같이 풀은 적절한 솔루션입니다. 이 경우 푸시는 클라이언트와 서버 모두에서 많은 리소스가 필요합니다.

팁! 수영장을 빠르고 깨끗하게 확인하는 페이지를 만들려면 각 요청에서 서버에서 많은 리소스를 소비하지 않습니다. 내가 일반적으로하는 것은 수영장이 비어 있는지 아닌지에 대한 메모리에 깃발을 유지하는 것입니다. 수영장이 비어있는 경우 대부분의 경우 페이지 요청이 매우 빠르게 실행됩니다.

글을 쓰는 것이 더 간단하게 들리기 때문에 설문 조사를 구현하고 간단하게 유지하는 것은 매우 가치가 있습니다.

혜성 구현 중 일부를 살펴 보았는지 확실하지 않습니다 (Ajax 푸시의 의미).

사용자가 사이트를 서핑하는 경우 실제로이 알림이 돼지가 켜질 수있는 서버에서 정보를 요청하지 않습니까?

고객이 얼마나 많은 고객을 가질 수 있는지 알지 못하고 폴링이 더 비싸지 않을지 말하는 것은 불가능합니다. 폴링을 권장합니다.

  • 분당 한 번 정도의 데이터를 업데이트하려는 것 같습니다. 알림이 그보다 훨씬 빠른 속도로 도달 할 수 없다면, 푸시하면 HTTP 연결을 열어두고 있지만 활동이 거의 보이지 않습니다.
  • 폴링은 기존 HTTP 컨벤션 위에 구축되므로 웹 브라우저와 대화하는 서버는 이미 일반적인 AJAX 요청에 응답 할 준비가되었습니다. 혜성 또는 플래시 소켓 기반 솔루션마다 요구 사항이 다릅니다. 당신은 같은 것이 필요합니다 cometd 서버 측면 및 서버 측 푸시를 맥주하는 클라이언트 측 라이브러리에서.

따라서 데이터 급류와 고객의 크랩로드를 관리하기 위해 무거운 정보가 필요하다면 혜성을 추천합니다. 그러나 그것은 사실이 아닌 것 같습니다.

이제 서비스가 있습니다 http://pusherapp.com 그것은이 문제를 한 번에 한 번에 깜박임으로 해결하려고 노력하고 있습니다. 체크 아웃 할 가치가있을 수 있습니다. (면책 조항 : 나는 그들과 관련이 없습니다).

나는 그것을 직접 시도하지 않았지만 일부는 말한다 혜성은 당신이 생각하는 것보다 더 쉽습니다. Ruby on Rails 플러그인이 호출됩니다 절대적인 힘 내가 들었던 말은 크게 이야기했다. 다시 말하지만, 나는 그것을 사용하지 않았으므로 ymmv이지만, 나의 이해는 폴링에 비해 훨씬 적은 자원이 필요하다는 것입니다. 나는 (누군가가 확인할 수 있습니까?) 그 혜성이 어떻게 macrumorslive.com WWDC Stevenotes의 라이브 블로깅을 제공합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top