with my sugestion, the client doesn't wait. in fact you could do something 
like that:

function(req, res){
    res.writeHead(200, {/*some other headers, you also can use trailing 
headers*/})
    requestSomething(req.body, function(err, result){
       res.write(makeResponseFromResult(result))
       res.write(resultContainerClosing())
       res.end()
    })

   res.write(headerOfTheResponseSite())
   res.write(sideBarOfTheSite())
   res.write(footerContainer())
   res.write(resultContainerOpening())
}


but ajax is ok too i guess.

Am Montag, 23. September 2013 14:35:09 UTC+2 schrieb Eric:
>
> Hi guys,
>
> Thanks all for the answers. I still digging into this problem but I 
> believe I found the problem. The method in question is used to perform 
> statistics and manage log regarding the client request. The client answer 
> is independent from this task, so we try to reply it's HTTP request as soon 
> as possible for better UI/UX experience on client side, and than manage the 
> rest of the task.
>
> The code is fairly complex due to several calls to database and log 
> managers, creating a hell of callbacks. We use a middleware framework (a 
> kind of express) and my guess is that when I call "res next" in the 
> middleware it ends the current thread even with some callbacks pending.
>
> We are trying to move this post-reply tasks into an emitter object and 
> handle this whit events + process.nexttick. What do you think?
>
> *@pedro* due to the code complexity is not viable for me to post it here.
>
> *@faysal* thanks for the code. We plan to use promises on our code but 
> haven't found the time yet to do it. I'm sure it will solve several needs 
> we have today.
>
> *@greelgorke* as a troubleshooting exercise we did something similar to 
> your suggestion and the problem went away. However we can't keep the client 
> awaiting, this could lead us into other business problems.
>
> Cheers,
>
> Eric
>
> --
> Eric Chaves
> (11) 98139-9880
>
>
> 2013/9/23 greelgorke <[email protected] <javascript:>>
>
>> don't use res.send for that. use res.writeHead, perform yur calcuation 
>> and request to the external server, receive the response from it, do your 
>> stuf with it and res.write/res.end to your client then
>>
>> Am Freitag, 20. September 2013 22:20:49 UTC+2 schrieb Eric:
>>
>>> Hi guys,
>>>
>>> I'm trying to write a service that performs the following actions:
>>>
>>> 1) receive an HTTP request from client with some data payload in body.
>>> 2) immediately reply with HTTP response 200 - ok
>>> 3) perform some calculations based on the payload and than performs an 
>>> HTTP request to an external HTTP server.
>>>
>>> To do that once my http callback is fired I call res.send() and than I 
>>> perform the calculations, then I create a new http object (var http = 
>>> require('http')) and call it's request method. At this point the callback 
>>> for this last call is never triggered.
>>>
>>> How should I do to reply to my http client as soon as possible and than 
>>> do another http request?
>>>
>>> Thanks in advance,
>>>
>>> Eric
>>>
>>  -- 
>> -- 
>> 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]<javascript:>
>> To unsubscribe from this group, send email to
>> [email protected] <javascript:>
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>  
>> --- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "nodejs" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/nodejs/gv0Wiq1ULp0/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected] <javascript:>.
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>

-- 
-- 
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

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to