Max did a pretty good writeup.

http://maxogden.com/node-streams

On May 27, 2012, at May 27, 20124:31 PM, Tim Dickinson wrote:

> Anything else you can think of? I don't really understand now the streams 
> should end.
> 
> On Sunday, May 27, 2012 7:23:10 PM UTC-4, Mikeal Rogers wrote:
> these are both read/write streams but you don't appear to be emitting "end" 
> after end() is called. that's an issue.
> 
> On May 27, 2012, at May 27, 20124:19 PM, Tim Dickinson wrote:
> 
>> So I thought about what you had said and I came up with this  
>> https://gist.github.com/2816361. What tips can you give me if any on making 
>> the "Stream"'s?
>> 
>> On Monday, April 30, 2012 6:36:22 PM UTC-4, Marco Rogers wrote:
>> There are several potential issues I'm seeing here. But it looks like you 
>> have an incoming stream of json messages that are encrypted and separated by 
>> newlines. You want parse the stream, decrypt each message and then pass the 
>> message to a data handler that expect to each message one by one. Is that 
>> accurate?
>> 
>> This is a great use case for node streams. Read up on them and create a 
>> stream (or multiple streams) that encapsulates this behavior. You might end 
>> up with a an elegant solution that looks like multiple streams piped 
>> together.
>> 
>> decryptedStream.on('data', function(data) {
>>   // do something with json object
>> });
>> socket.pipe(messageSplitter).pipe(decrytptedStream)
>> 
>> Here are some good resources to check out.
>> 
>> http://nodejs.org/api/stream.html
>> http://maxogden.com/node-streams
>> https://github.com/dominictarr/event-stream
>> 
>> In short, try to separate concerns, splitting the message stream, 
>> decrypting, json parsing, etc.
>> 
>> :Marco
>> 
>> 
>> On Monday, April 30, 2012 3:24:37 PM UTC-7, Tim Dickinson wrote:
>> Oh sorry and you would use it like so
>> 
>> 
>> socket.on('data', bufferJson(key, function(data) {
>>      //do something with json object
>> }))
>> 
>> On Monday, April 30, 2012 6:23:11 PM UTC-4, Tim Dickinson wrote:
>> Hey all.
>> 
>> How can i better write this snippet of code?
>> 
>> var bufferJson = function(key, requestEvent) {
>>      var buffer = []
>>      var cryptoFn = function(message) {
>>              var decipher = crypto.createDecipher('aes-256-cbc', key)
>>              return decipher.update(message, 'hex', 'utf8') + 
>> decipher['final']('utf8')
>>      }
>>      function onData(data) {
>>              if(data.indexOf('\n') > -1) {
>> 
>>                      var message = buffer.join('');
>>                      data = data.split('\n');
>>                      message += data.shift();
>>                      buffer = [];
>> 
>>                      try {
>>                              console.log(cryptoFn(message))
>>                              var json = JSON.parse(cryptoFn(message));
>>                      } catch(e) {
>>                              return util.error('Could not parse message: ' + 
>> e.message);
>>                      }
>> 
>>                      requestEvent(json)
>>                      data = data.join('\n');
>> 
>>                      if(data.length) {
>>                              onData(data);
>>                      }
>> 
>>              } else {
>>                      buffer.push(data);
>>              }
>>      }
>> 
>>      return onData
>> }
>> 
>> -- 
>> 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 nodejs@googlegroups.com
>> To unsubscribe from this group, send email to
>> nodejs+unsubscr...@googlegroups.com
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
> 
> 
> -- 
> 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 nodejs@googlegroups.com
> To unsubscribe from this group, send email to
> nodejs+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/nodejs?hl=en?hl=en

-- 
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 nodejs@googlegroups.com
To unsubscribe from this group, send email to
nodejs+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

Reply via email to