Scenario: Upon an API call from Angular7, i am calling Node (via express) and returning chunked data of type string - I want to capture this string data and display it as string
Server-side: From Node backend, the data is being sent is 'text' and not json... the data is sent via multiple res.write('some strings') statements
client-side in Angular: I want an observable to process this data...
SyntaxError: Unexpected token { in JSON at position 12 at JSON.parse ()
ERROR in src/app/myS.service.ts(24,54): error TS2322: Type '"text"' is not assignable to type '"json"'
how can i capture 'text' data from my Node JS backend... i am using npm cors in my Node so no CORS errors there
Demo code available here: https://stackblitz.com/edit/angular-44sess
My Back-end is in the snippet below:
app.get('/obs/responseWrite', cors(), function(req, res){
var j=0;
const headers = {
'Content-Type': 'text',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'OPTIONS, POST, GET',
'Access-Control-Max-Age': 2592000, // 30 days
};
res.writeHead(200,headers);
for(var i=0; i<50000; i++){
/* setInterval(function() { res.write("returning j:["+ j + "]. "); j=j+1; if(j>=100){res.end();} }, 1000); */
var myObj = { return : i };
var myStr= JSON.stringify(myObj);
console.log(myStr);
res.write(myStr);
}
setInterval(function() { res.end(); }, 15000);
});
I always use the following patterns in this case:
returnObservable(): Observable<any> {
const requestOptions: Object = {
/* other options here */
responseType: 'text'
}
return this.http.get<any>(this.streamURL , requestOptions);
}
Hope it answers your question!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With