diff --git a/package.json b/package.json index aef3a86..684786a 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "co-views": "~0.1.0", "ejs": "~0.8.5", "swig": "~1.2.2", + "streaming-json-stringify": "~1.0.0", "koa-logger": "~1.1.0", "koa-route": "~1.0.2", "koa-static": "~1.4.0" diff --git a/stream-objects/app.js b/stream-objects/app.js new file mode 100644 index 0000000..1655846 --- /dev/null +++ b/stream-objects/app.js @@ -0,0 +1,30 @@ + +var koa = require('koa'); +var JSONStream = require('streaming-json-stringify'); + +var app = module.exports = koa(); + +app.use(function *(){ + this.type = 'json'; + var stream = this.body = JSONStream(); + + stream.on('error', this.onerror); + + setTimeout(function(){ + stream.write({ + id: 1 + }); + }, 1); + + setTimeout(function(){ + stream.write({ + id: 2 + }); + }, 2); + + setTimeout(function(){ + stream.end(); + }, 3); +}); + +if (!module.parent) app.listen(3000); diff --git a/stream-objects/test.js b/stream-objects/test.js new file mode 100644 index 0000000..da50525 --- /dev/null +++ b/stream-objects/test.js @@ -0,0 +1,19 @@ +var app = require('./app'); +var request = require('supertest').agent(app.listen()); + +describe('Stream Objects', function(){ + it('GET /', function(done){ + request + .get('/app.js') + .expect(200, function(err, res){ + if (err) return done(err); + + res.body.should.eql([{ + id: 1 + }, { + id: 2 + }]); + done(); + }); + }); +}); \ No newline at end of file