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