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