Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Process chunked response with angularjs $http

I discoverd recently chunked response. I agree that most of the time we want to work on a full response. But what if I want to work on a chunked response.

How would i do this with the $http service??

like image 877
benzen Avatar asked Nov 01 '12 01:11

benzen


2 Answers

You can define a function with the angularjs promise $q wrapping the XMLHttpRequest.

var chunkedRequestWithPromise = function () {
  var deferred = $q.defer();
  var xhr = new XMLHttpRequest()
  xhr.open("GET", 'https://yoururl.com/chunked', true)
  xhr.onprogress = function () {
    deferred.notify(xhr.responseText);
  }
  xhr.onreadystatechange = function (oEvent) {
    if (xhr.readyState === 4) {
        if (xhr.status === 200) {
            deferred.resolve('success');
        } else {
            deferred.reject(xhr.statusText);
        }
    }
  };
  xhr.send();
  return deferred.promise;
};

and use it:

chunkedRequestWithPromise().then(successFn,errorFn,notifyFn);
like image 171
Stef Chäser Avatar answered Sep 22 '22 09:09

Stef Chäser


I've found a way to do something that looks correct to me http://www.igvita.com/2011/08/26/server-sent-event-notifications-with-html5/

Of course there is also the websocket api, but it seams heavy for my uses

Another possibility would be the write another http service which would give control over the http response

like image 36
benzen Avatar answered Sep 19 '22 09:09

benzen