const PORT = process.env.PORT || 5000
const app = express()
const server = http.createServer(app)
server.on('upgrade', (req, socket) => {
// здесь websocket, можно использовать пакет ws
})
server.listen(PORT, () => console.log(`Server started on PORT = ${PORT}`))
app.use("/api", fooRouter, foooRouter, [fooooRouter, foooooRouter], fooooooRouter);
let chunks = '';
req.on('data', chunk => {
chunks += chunk;
});
const filePath = `../source/archive.zip`;
const reader = fs.createReadStream(filePath);
const options = {
hostname: url.hostname,
port: 443,
path: url.pathname,
method: 'PUT',
headers: {
'Content-Type': 'application/zip',
'Content-Length': fs.statSync(filePath).size
}
};
const req = https.request(options, res => {
res.on('error', err => console.log('ошибка:', err));
res.on('end', () => console.log('отправлено'));
});
reader.pipe(req);
router.put('/', (req, res, next) => {
const pathToFile = path.join(__dirname, '../public/uploads/archive.zip');
const writer = fs.createWriteStream(pathToFile);
req.pipe(writer).once('error', next).once('finish', () => {
res.send('файл сохранён');
});
});
1. На сколько такой подход оправдан и необходим?Вполне себе оправдан. Представьте, что через месяц после запуска на Вас сваливается таска "быстро заканчивается место на диске, давайте как-то по другому хранить, и загрузку не забудьте поменять", как будет проще, одно место поправить или везде где накопипастили?
2. Как обычно поступают в подобных случаях?Если какой-то участок кода повторяется более 1 раза, то выносят его в отдельную функцию. Так что направление Вы выбрали верное.
3. Не избыточно ли я декомпозировал все? (либо можно еще лучше, как?)Покажите коллеге, сможет ли он без объяснения разобраться, что происходит?
var app = require('express')();
var http = require('http');
var server1 = http.createServer(app);
var server2 = http.createServer(app);
server1.listen(PORT1, ADDRESS1);
server2.listen(PORT2, ADDRESS2);
const mysql = require('some-mysql-library');
const app = express();
// ...
function getUserFromMysqlMiddleware(req, res, next) {
mysql.query('SELECT * FROM `users` WHERE `id`=? LIMIT 1', [req.query.userid]).then(([user]) => {
if(!user) {
const err = new Error('Access denied');
err.status = 403;
return next(err);
}
req.user = user;
next();
}).catch(next);
}
app.post('/some/route', getUserFromMysqlMiddleware, (req, res) => {
// Ваш код с гарантированным наличием req.user
});
app.put('/some/route', getUserFromMysqlMiddleware, (req, res) => {
// Ваш код с гарантированным наличием req.user
});
Vue.js, React или Angular?что знаете, то и берите...
Далее все это запихну в Express.express это про создание тормознутых веб-серверов, у электрона есть более эфективное апи для этого: