2010-07-02 3 views
1

저는 현재 아이폰 앱에서 Ruby On Rails 앱으로 특정 메시지 (XML이 될 수있는 메시지)를 보내는 일을 담당하고 있습니다. webapp는 즉시 이러한 메시지를 표시해야하므로 페이지를 다시로드하는 것은 실제로 옵션이 아닙니다.iPhone 앱에서 비동기 적으로 Rails 앱에 데이터를 수신하는 방법은 무엇입니까?

POST 요청에 대해 이러한 종류의 청취 프로세스를 만드는 방법을 찾지 못했습니다. 누군가 올바른 경로로 나를 안내 할 수 있으며, 내가 무엇을해야하는지에 대해 알 수 있습니다. 뭔가 내려다 보지?

편집 : 소켓을 더 스마트하게 사용 하시겠습니까? 앱은 동일한 무선 랜 네트워크의 iPod Touch/iPad에서 실행됩니다.

감사합니다.

+0

펍 서브 방법은 어떻습니까? 아이폰 앱에서 appspot의 pubsub 허브로 xml을 푸시하고 허브가 변경된/새로운 xml을 받으면 곧바로 레일 앱을 ping하도록하십시오. 그래도 긴 폴링을 사용해야합니다. 귀하의 모든 레일 애플 리케이션은 특정 XML 피드에 가입해야만합니다. –

답변

1

달성하려는 작업은 가능하지만 Ruby on Rails의 강점 중 하나는 아닙니다. 브라우저에서 실시간으로 메시지를 업데이트해야하는 경우 JSSockets을 사용할 수 있습니다. 그러나 nodejs과 같은 많은 지속적인 연결을 처리하거나 루비 EventMachine을 사용하려는 경우 서버 백엔드가 필요합니다. 당신은 여전히 ​​당신의 레일 응용 프로그램을 통해 메시지를받을 하려는 경우, 데이터의 흐름은

  1. 레일 응용 프로그램은
  2. 레일 애플 리케이션 게시물 메시지에 (/messages에 XML을 게시하여 말) 메시지를 수신 할 것 메세지 큐. resque
  3. Evented 서버가 브라우저에 큐 및 게시물 메시지 수신에보고는

는 업데이트 : 미안 해요, 아이폰 응용 프로그램 만 부분을 보내는 것으로 질문을 오해. 안타깝게도 JSSocket을 iPhone에서 사용할 수는 없습니다. 통신용 Adobe Flash 구성 요소가 함께 제공되기 때문입니다. 그러나 긴 폴링을 사용하거나 Objective-C에서 소켓을 구현하고받은 객체를 [webview stringByEvaluatingJavascriptString]을 통해 웹 뷰로 푸시 할 수 있습니다.

+0

레일스를 사용하는 것에 완전히 익숙하지는 않습니다. 단지 제가 선호하는 전략입니다. Node.js가 실제로 필요한 것처럼 보입니다. 레일 애플리케이션에 통합하기위한 조언이 있습니까? 응용 프로그램의 나머지 부분은 데이터베이스 기반이므로 전혀 레일과 같은 것을 뺄 수는 없습니다. – dannyzlo

+0

불행하게도 레일스 애플리케이션 (플러그인 스타일)의 일부로 이벤트 프레임 워크를 통합하는 방법을 알지 못합니다. 패러다임은 완전히 다릅니다. 통합 방법은 메시지 대기열을 통한 메시지 전달입니다. 그리고 그것은 또한 아주 간단합니다. – flitzwald

+0

나는 실제로 내가 잘못 말한 것, 또는 두 번 잘못 읽은 것 같아요. 아이폰 만 보내고 싶다면 webapp는 메시지를 보내고 영수증을 확인하고 메시지를 받아야했다. – dannyzlo

관련 문제