我对这个问题采取的基本方法是使用stream2。
我的基本方法是这样的。
从第一个 tcp 获取数据
var gulp = require('gulp')
, thr = require('through2')
;
gulp.watch('rootDirectory/**/*', function(evt) {
if ('deleted' === evt.type) {
// do stuff if file is deleted
return
}
// file got changed, moved or added.
gulp.src(evt.path).pipe(thr(chunk, enc, next){
// chunk is a vinyl filesytem object,
// so better fix chunk before sending to tcp server
next(null, fixedChunk)
}).pipe(toYourTcpServer)
})
然后在你的节点
var net = require('net')
, http = require('http')
;
var clientTcp = net.connect({port: 'toYourTcpServerPort'})
var server = http.createServer(function(req, res){
clientTcp.pipe(res)
}).listen('somePort')
然后在另一端,你
在节点做相反的事情
var clientTcp2 = net.connect({port: 'toYourTcpServerPort2'})
var server2 = http.createServer(function(req, res){
// fix response or something else.
req.pipe(clientTcp2)
}).listen('somePort')
来自第二个 tcp
gutil = require('gulp-util')
clientTcp2.pipe(thr(function(chunk, enc, next){
// You must create a vinyl filesystem before
// sending down stream. Use new gutil.File()
next(null, fixedChunk)
})).pipe(gulp.dest('finalDirectoy'))
through2
创建转换流并gulp
帮助您使用流创建任务。乙烯基文件只是 gulp 使用的一种抽象。
我希望这能让您了解如何使用流来解决您的问题,祝您好运