const fs = require('fs');
const stream = require('stream');
const net = require('net');
const zlib = require('zlib');
const gzip = zlib.createGzip();
const ugzip = zlib.createGunzip();
var opt = {};
opt.allowHalfOpen = true;
var ser = net.createServer(opt, function(conn) {
var res = {};
conn.on('data', function(data) {
data = data.toString();
data = JSON.parse(data);
console.log(data);
if(data.events == 'write') {
console.log('writing');
var w1 = fs.createWriteStream('../../document/' + data.name);
var datet = Buffer.from(data.data + new Date().toString());
console.log(datet, ' data');
w1.write(datet);
w1.end();
w1.on('finish', function() {
console.log('writed')
var reader1 = fs.createReadStream('../../document/' + data.name);
var writer1 = fs.createWriteStream('../../document/' + data.name + '.gz');
reader1.pipe(gzip).pipe(writer1);
res.events = 'write';
res.result = true;
conn.write(JSON.stringify(res));
//conn.pipe(conn);
})
w1.on('error', function(err) {
res.events = 'write';
res.result = false;
console.log(err);
conn.write(Buffer.from(JSON.stringify(res)));
})
} else if(data.events == 'read'){
setTimeout(function() {
var r1 = fs.createReadStream('../../document/' + data.name + '.gz');
var w2 = fs.createWriteStream('../../document/' + data.name);
r1.pipe(ugzip).pipe(w2);
r1.on('error', function() {
console.log('err');
res.events = 'read';
res.result = false;
conn.write(Buffer.from(JSON.stringify(res)));
})
w2.on('finish', function() {
console.log('w2');
var read1 = fs.createReadStream('../../document/' + data.name);
read1.on('data', function(dt) {
dt = Buffer.from(dt).toString();
res.events = 'read';
res.result = true;
res.data = dt;
conn.write(Buffer.from(JSON.stringify(res)));
})
})
}, 1000)
}
})
})
ser.listen(10060, function() {
console.log('port: ', 10060);
})
读取buffer转化buffer 通过stream读取数据写入数据压缩等.