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