2012-03-23 3 views
1

iOS 앱에 실시간 대기열을 구현해야합니다. (나중에 안드로이드 너무).iOS 클라이언트에서 실시간 대기열 구현

주요 사용 사례는 사용자가 모든 사용자가 실시간 공유 대기열을 볼 수 있도록하는 것입니다. 많은 대기열이있을 수 있지만 현재 사용자는 한 번에 하나의 대기열 만 볼 수 있습니다. 한 사용자가 대기열에서 항목을 삭제하면 같은 대기열을 보는 다른 모든 iOS 앱 사용자는 실시간으로 대기열 업데이트를 볼 수 있습니다. 내 서버가 새 항목이 특정 대기열에 추가되었음을 감지하면 실시간으로 해당 대기열을 보는 다른 모든 클라이언트에 푸시되어야합니다.

이러한 메커니즘을 구현하는 가장 좋은 방법은 무엇입니까? 현재 iOS 만 지원하고 있지만 나중에 다른 모바일 플랫폼을 추가하는 것이 번거롭지 않을 것 같은 쉬운 솔루션이어야합니다. 애플의 푸시 알림 또는 다른 영구 연결 옵션을 사용하여 - (기본적으로있는 UIWebView를 제시) 웹 기술 (JS & HTML5 인)

  • 기본 방법을 사용하여 수행

    1. : 내 생각

      2 개 주 옵션이 있습니다. (푸시 알림은 앱이 백그라운드에 있거나 대기 금지 상태 인 경우에도 대기열 변경 ​​사항을 알릴 수 있기를 바라는 경우 더 좋습니다.)

    물론 하이브리드 솔루션을 선택할 수도 있습니다.

    나는 다음과 같은 PUB-SUB 솔루션을 잘 알고 : 나는 누군가가 논문 또는 다른 사람의 실험 경우 하나를 추천하고 말할 수있는, 듣고 궁금

    1.Xmpp (extension to Xmpp would be more accurate) 
    2.MQTT 
    3.Pubnub - http://www.pubnub.com/ (pretty new out there) 
    4. I read about Linked-in Kafka, but that seems way more advance and complicated to ny current needs. 
    

    기본 또는 웹 경우 기본 경로입니다. 선택한 솔루션은 사용하기 쉽고 구현이 빠르며 적은 비용으로 구현해야합니다. (서버 측이 PHP에서 주로 작성하지만, Node.js를뿐만 아니라 옵션이다) 모바일 클라이언트 (또는 모든 유형의 클라이언트) 서버 측 큐의 상태에 대한 업데이트하기

    감사

  • +0

    첫 번째 선택은 서버에 대기열을 넣고 거기에 액세스 할 것인지, 아니면 모든 사용자간에 클라이언트 대기열의 동기화를 유지하려고 시도하는 것입니다. 부분적으로 결정은 업데이트 빈도와 동기화가 얼마나 신속하고 정확한지에 달려 있습니다. –

    +0

    대기열은 서버에 의해 유지 관리됩니다. iOS 클라이언트가 대기열 상태를 통신하고 현재 대기열을보고 대기열 상태를 처리하는 모든 사용자에게 대기열 상태를 전달해야하는 이유가 무엇인지 생각할 수 없습니다. 내가 당신이 말한 것을 오해하지 않는다면, 서버는 구독하는 대기열에있는 모든 변경 사항을 모든 클라이언트에 푸시해야한다고 제안합니다. – Idan

    +0

    그러면 "변경되었습니다"라는 알림을 보내고 클라이언트가 돌아와 대기열의 "보기"를 새로 고치게해야합니다. 클라이언트가 특정 변경 사항이 자신의 필요에 "중요한"것인지 여부를 알 수 있도록 "변경되었습니다"라는 한정자를 밀어 넣을 수는 있지만 그 정도까지는 가능합니다. 푸시를 처리하는 세 가지 방법은 푸시 알림 (아마도 최선의 선택), "get"및 폴링입니다. –

    답변

    0

    을 (또는 모든 데이터 시스템/모든 유형의 구조, RDBMS, No-SQL, 파일 등)은 PubNub을 사용할 수 있습니다.

    고객은 queue-status (원하는 이름 지정)이라는 채널을 구독하게됩니다. 대기열이 클라이언트 또는 서버 측 프로세스에 의해 업데이트 될 때마다 변경 사항을 성공적으로 완료하면 queue-status 채널에 변경/상태를 게시하면 적극적으로 구독하는 모든 클라이언트는 < 1/4의 업데이트를받습니다. 얼마나 많은 고객이 있는지, 또는 전세계에있는 고객의 수.

    클라이언트 앱이 해당 채널에서 APNS (푸시 알림)에 등록되어 있고 앱이 실행 중이 아니거나 포 그라운드가 아닌 경우 클라이언트 기기는 해당 푸시 알림을받습니다.

    PubNub PHP SDK for your server side to publish the messagesPubNub iOS SDK to subscribe to receive the messages을 사용하십시오.

    그리고 PubNub Access Manager to lock down access to your channels을 반드시 사용하십시오.