Object.getOwnPropertyNames(foo).forEach(function(prop) {
Object.defineProperty(
bar,
prop,
Object.getOwnPropertyDescriptor(foo, prop)
);
});
const stream = require('stream');
const fs = require('fs');
class PercentWatcher extends stream.Duplex {
constructor(fd) {
super();
this.size = fs.fstatSync(fd).size;
this.handled = 0;
}
_read() {}
_write(chunk, encoding, callback) {
this.push(chunk);
this.handled += chunk.length;
console.log(`\n\n${Math.round(this.handled / this.size * 100)}%\n\n`);
callback();
}
}
const fd = fs.openSync('file.txt', 'r');
fs.createReadStream(null, {fd}).pipe(new PercentWatcher(fd)).pipe(process.stdout);
app.io = function(server) {
var io = require('socket.io')(server);
io.on('connection', function (socket) {
//...
});
}
app.io(server);
// routes/socket.js
function handler(socket) {
// ...
}
module.exports = handler;
// app.js
var io = require('socket.io');
var socket = require('./routes/socket');
app.io = function(server) {
io(server).on('connection', socket);
};
// bin/www
app.io(server);
var cp1251 = 'ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬®Ї°±Ііґµ¶·\
ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';
var str = '%EF%F0%E8%E2%E5%F2'.replace(/%(..)/g, function(s, p) {
p = parseInt(p, 16);
return p < 128 ? String.fromCharCode(p) : cp1251[p - 128];
});
var fs = require('fs');
var fd = fs.openSync('./text', 'r');
var decoder = new (require('string_decoder').StringDecoder)();
var buf = new Buffer(10);
var list = [], str, bytesReaded;
while (bytesReaded = fs.readSync(fd, buf, 0, 10, null)) {
str = (list.pop() || '') + decoder.write(buf.slice(0, bytesReaded));
list = list.concat(str.split("\n"));
}
console.log(list);
var fs = require('fs');
var list = [];
fs.createReadStream('./text', {encoding: 'utf8'})
.on('readable', function() {
var str, chunk;
while (chunk = this.read(10)) {
str = ((list.pop() ||'') + chunk);
list = list.concat(str.split('\n'));
}
list[list.length-1] += (this.read() || '');
})
.on('end',function() {
console.log(list);
});