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

Reply via email to