If I do that, calling code like this:

session.end('a', function() {
  process.exit();
});

... will result in 'a' never being sent.

Here's an example of the two code styles, if it helps:
https://gist.github.com/josephg/9194035

Does anyone know how primus deals with this?

On Mon, Feb 24, 2014 at 5:37 AM, Fedor Indutny <[email protected]> wrote:
> Joseph,
>
> I think you could try calling `writecb` immediately up until your
> internal queue will fill up, and then starts calling it as soon as you
> can do next write.
>
> On Mon, Feb 24, 2014 at 5:14 PM, greelgorke <[email protected]> wrote:
>> may be examples of your code would help
>>
>>
>> Am Montag, 24. Februar 2014 11:38:22 UTC+1 schrieb Joseph Gentle:
>>>
>>> I'm (finally!) making node-browserchannel extend streams, but I can't
>>> figure out how to make streams do what I want. (browserchannel is a
>>> socketio-like library if you haven't seen it -
>>> https://github.com/josephg/node-browserchannel ).
>>>
>>> I'm using a stream in objectMode (because its sending chunked messages). I
>>> want to be able to have many messages in-flight at a time (I can send many
>>> messages in reply to a long polling HTTP request from the client). According
>>> to the spec for streams, My problem is that _write won't let me process
>>> multiple messages at a time - according to the spec, I should only call the
>>> _write() callback when the message has been 'flushed', and _write doesn't
>>> get called again until a process.nextTick() after I call the callback.
>>>
>>> - If I'm honest and call the callback only after the http response has
>>> been fired, I can only send one message per http response (_write doesn't
>>> get called again until the next event loop fires). Having only one message
>>> in-flight at a time is a _huge_ performance regression.
>>> - If I lie and call the callback immediately, the stream behaves badly.
>>> For example, if you call end() with a message on the stream, the stream
>>> emits 'finish' long before the messages have actually been delivered to the
>>> client. You also can't syncronously send a bunch of response messages in
>>> response to a single request message - unless I do a setTimeout(..., 10) or
>>> something awful I have no way to bunch the responses into a single HTTP
>>> response.
>>>
>>> Is there a good answer here? I can't think of a decent way to obey the
>>> streams protocol while still being performant. I could make my own duck
>>> typed implementation of the Duplex streams API, though I'll probably make
>>> mistakes and I won't have pipe() support. ... Are there any other good
>>> options?
>>>
>>> -J
>>>
>>>
>> --
>> --
>> 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.
>
> --
> --
> 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 a topic in the Google 
> Groups "nodejs" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/nodejs/l0Lb6XXPhOc/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to 
> [email protected].
> 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