我有一个简单的http服务器,它将所有数据从req对象(源)传递到res(目标)对象。但在将其写入destionation之前,如何从源更改输出数据呢?
通过更改数据我的意思很简单,比如在数据上调用toUpperCase()
。
http.createServer(function(req, res){
if(req.method.toLowerCase() != 'post')
res.end() ;
req.pipe(res) ;
}).listen(9090) ;
答案 0 :(得分:0)
您可以像这样创建自己的Transform stream,它位于两个流之间:
var inherits = require('util').inherits;
var TransformStream = require('stream').Transform;
function UpperStream() {
TransformStream.call(this);
}
inherits(UpperStream, TransformStream);
UpperStream.prototype._transform = function(chunk, encoding, cb) {
for (var i = 0; i < chunk.length; ++i) {
var ch = chunk[i];
// Check for lowercase character
if (ch >= 97 && ch <= 122) {
// Make it uppercase
chunk[i] &= ~32;
}
}
cb(null, chunk);
};
然后你可以做类似的事情:
http.createServer(function(req, res){
if(req.method.toLowerCase() != 'post')
return res.end() ;
req.pipe(new UpperStream()).pipe(res) ;
}).listen(9090) ;