pusher-js
Version:
Pusher Channels JavaScript library for browsers, React Native, NodeJS and web workers
36 lines (33 loc) • 1.05 kB
text/typescript
import HTTPRequest from 'core/http/http_request';
import RequestHooks from 'core/http/request_hooks';
import Ajax from 'core/http/ajax';
import Runtime from 'runtime';
var hooks: RequestHooks = {
getRequest: function (socket: HTTPRequest): Ajax {
var Constructor = Runtime.getXHRAPI();
var xhr = new Constructor();
xhr.onreadystatechange = xhr.onprogress = function () {
switch (xhr.readyState) {
case 3:
if (xhr.responseText && xhr.responseText.length > 0) {
socket.onChunk(xhr.status, xhr.responseText);
}
break;
case 4:
// this happens only on errors, never after calling close
if (xhr.responseText && xhr.responseText.length > 0) {
socket.onChunk(xhr.status, xhr.responseText);
}
socket.emit('finished', xhr.status);
socket.close();
break;
}
};
return xhr;
},
abortRequest: function (xhr: Ajax) {
xhr.onreadystatechange = null;
xhr.abort();
},
};
export default hooks;