put your oa.get call in your recursive function, then you can call 
recursive function in on "close" handler, this should work. a retry request 
is just another request, at least in http.

Am Mittwoch, 23. Januar 2013 03:11:02 UTC+1 schrieb am_p1:
>
> Node and js noobie here so if there's a simple fix for this... I admit 
> my humiliation in advance...
>
> I'm receiving millions of xml packets a day using node to pull from a 
> streaming api and it's working great using less than 1% of my server!!
>
> But about 0 to 2 times a day "response end" followed by "response close" 
> gets called and then, no more data. Not sure why but I assume it's 
> something outside my server and beyond my control.
>
> Problem is how do I end the request from the "response close" callback and 
> then retry the request to get it going again? I've tried request.abort, 
> end, destroy, return and other things i've forgotten right now... but nada, 
> I can't seem to end the request from within the "response close" callback.
>
> I might have made this more complicated trying to recursively call the 
> function... which works great on another node, but it's a request/response 
> type with a setTimeout, not streaming like this one.
>
> Anyway, the code's below and all I want to do after getting "response 
> close" is to retry the request and get back to receiving the xml packets as 
> fast as possible... like maybe with this:
> setTimeout(recursive,100)
>
> Thanks for the help!!
>
>
> ================================================================================
> var oa = new 
> oauth.OAuth(null,null,config.consumer_key,config.consumer_secret,"1.0",null,"HMAC-SHA1")
>
> var db = new odbc.Database()
>
> var request = 
> oa.get(config.api_url+'?symbols='+syms,config.access_token,config.access_secret)
>
> var recursive = function () {
>
>   request.on('response',function(response) {
>
>     response.on('data',function(data) {
>
>       // ... lots o code, all working great
>
>       })
>
>     response.on('end',function() {
>
>       console.log(chld,'response end',Date(),microtime.now())
>
>       })
>
>     response.on('close',function() {
>
>       console.log(chld,'response close',Date(),microtime.now())
>
>       // i have tried various code here but nada - function never ends (at 
> least, i think thats whats happening)
>
>       })
>
>     })
>
>   // the 4 below have never fired
>
>   request.on('socket',function() {
>
>     console.log(chld,'request socket',Date(),microtime.now())
>
>     })
>
>   request.on('connect',function() {
>
>     console.log(chld,'request connect',Date(),microtime.now())
>
>     })
>
>   request.on('upgrade',function() {
>
>     console.log(chld,'request upgrade',Date(),microtime.now())
>
>     })
>
>   request.on('continue',function() {
>
>     console.log(chld,'request continue',Date(),microtime.now())
>
>     })
>
>   request.end()
>
>   // also tried code here but nada
>
> }
>
> db.open("DRIVER={DB2};DATABASE=......",function(err) {
>
>   if(err) {
>     console.log(chld,err)
>     db.close(function() {
>     })
>
>   } else {  
>
>     recursive()
>
>   }
>
> })
>

-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to