var stream = XHRStream("/foo")
stream.write("bar")
stream.end()
var handler = XHRStream()
router.addRoute("/foo", handler.handler)
handler.stream.pipe(WriteStream(function (chunk) {
assert.equal(chunk, "bar")
}))
var xhr = require("xhr") | |
, WriteStream = require("write-stream") | |
module.exports = XHRWriteStream | |
function XHRWriteStream(uri) { | |
var ordered = OrderedStream() | |
var stream = WriteStream(function write(chunk) { | |
xhr({ | |
uri: uri + "/write" | |
, method: "POST" | |
, data: JSON.stringify(chunk) | |
}, error) | |
}, function end() { | |
xhr({ | |
uri: uri + "/end" | |
, method: "POST" | |
}, error) | |
}) | |
ordered.pipe(stream) | |
return ordered | |
function error(err) { | |
if (err) { | |
ordered.emit("error", err) | |
} | |
} | |
} |
var ReadStream = require("read-stream") | |
, toArray = require("write-stream").toArray | |
, open = /.*\/write$/ | |
, end = /.*\/end$/ | |
module.exports = XHRRoute | |
function XHRRoute() { | |
var queue = ReadStream() | |
, ordered = OrderedStream() | |
return { | |
handler: handler | |
, stream: queue.stream | |
} | |
function handler(req, res) { | |
if (open.test(req.url)) { | |
req.pipe(ordered).pipe(toArray(function (array) { | |
queue.push(JSON.parse(array.join(""))) | |
})) | |
} else if (end.test(req.url)) { | |
queue.end() | |
} | |
} | |
} |