Bidirectional and unidirectional object streams for Node.js
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib
samples/broadcast
test
.gitignore
.npmignore
LICENSE
README.md
package.json
test.js

README.md

ObjectStream

Bidirectional and unidirectional object streams for Node.js.

Installation

Via npm on Node:

npm install objectstream

Usage

Reference in your program:

var objectstream = require('objectstream');

Write objects to a serialize stream:

var stream = fs.createSerializeStream(filename);
var objstream = objectstream.createSerializeStream(stream);
objstream.write({ name: 'Adam', age: 800 });
objstream.write({ name: 'Eve', age: 700 });
objstream.end();

createSerializeStream accepts a writable stream as parameter. In this example, the objects will be written to a file. The final content will be two lines, with the objects serialized using JSON.stringify:

{"name":"Adam","age":800}
{"name":"Eve","age":700}

Now, given the same file (already closed), you can read the objects using a deserialize stream:

var stream = fs.createDeserializeStream(filename);
var objstream = objectstream.createDeserializeStream(stream);
objstream.on('data', function (data) { console.dir(data); });
objstream.on('end', function () { console.dir('done'); });

You will receive two deserialized objects.

There is a bidirectional object stream:

var objstream = fs.createStream(bidirectionalstream);

For example, the parameter could be a socket, that is a bidirectional stream implementation.

Alternatively, you can specify a readable stream and writable stream:

var objstream = fs.createStream(readstream, writestream);

You can write and read objects:

objstream.on('data', function (obj) { console.dir(obj); });
objstream.write({ message: 'hello', arguments: { name: 'Adam' }});

Development

git clone git://github.com/ajlopez/ObjectStream.git
cd ObjectStream
npm install
npm test

Samples

TBD

To do

  • Samples

Versions

  • 0.0.1: Published
  • 0.0.2: Published. Improved write stream, testing writable property before write.
  • 0.0.3: Published. Reviewing internal events. Updated engine range
  • 0.0.4: Published. Write only if output stream is writable
  • 0.0.5: Published. Using events module; using simpleunit

Contribution

Feel free to file issues and submit pull requests — contributions are welcome.

If you submit a pull request, please be sure to add or update corresponding test cases, and ensure that npm test continues to pass.