2013-03-26 5 views
0

App.net public stream을 읽고 싶습니다. 그러나 간단한 $http.get()을 사용하면 응답이 하나뿐입니다.

$http 
    .get('https://alpha-api.app.net/stream/0/posts/stream/global') 
    .success(function (results) { 
    console.log('received results', results); 
    }) 
; 

AngularJS에서 http 스트림에 어떻게 연결합니까?
방법이 있습니까? 아니면 WebSocket과 같은 것을 사용해야합니까?

+1

* rtm *, 구조는 다음과 같습니다.'{data : [...]}', 귀하의 경우 :'results.data'는 20 개의 항목을 포함하게됩니다. – Yoshi

+0

@Yoshi는 정확하고 콘솔에서 쉽게 볼 수 있습니다. 그러나 새 게시물을 가져 오기 위해 또 다른'$ http.get();'을 만들어야합니다. 그러나 http 스트림에 액세스하고 대신 긴 폴링을 원합니다. –

+0

그게 당신이 사용하는 API에 관한 더 많은 질문이라고 생각합니다. 문서에서 나는 긴 폴링이 가능할 것이라고 말하는 곳을 보지 못했습니다. 간단히 * 글로벌 스트림에서 가장 최근 게시물 20 개를 반환하십시오. *. – Yoshi

답변

1

$http은 단일 요청입니다. 긴 폴링의 경우 주기적으로 $interval으로 호출하십시오.

function MyCtrl($scope, $timeout) { 
    function poll() { 
    $http.get('...').success(function(data) { 
     $scope.posts = data; 
    }); 
    $timeout(poll, 10000); 
    } 

    poll(); 
} 

또한이 논리를 캡슐화하는 서비스를 만들 수도 있지만 결과를 변경하는 대신 고정 데이터 구조가 업데이트되어야합니다. this과 같은 것입니다.

+0

비록 이것이 지속적인 연결이라면, 당신은 Socket.io와 커스텀 서비스로 가고 싶을 것입니다. [예제가 있습니다.] (https://github.com/mhevery/angular- node-socketio). –

+0

$ 간격 대신 $ 시간 초과가 있다고 생각합니까? – ganaraj

+1

네 말이 맞아. 나는'$ interval '서비스를 만들었고 맞춤법을 잊어 버렸다. :) –