Пытаюсь сделать простой чат на nodejs с использованием koa, но возникают проблемы:
1) static path не устанавливается, и шаблоны не обрабатываются
2) не очень понимаю как сделать long polling чат ( и он ли у меня получился )
3) также буду рад любым замечаниям
const http = require('http');
const Koa = require('koa');
const KoaRouter = require('koa-router');
const koaBody = require('koa-body');
const koaStatic = require('koa-static');
const Pug = require('pug');
const app = new Koa();
const router = new KoaRouter();
let admin;
let messages = [];
let users = [];
router
.get('/feed', async (ctx, next) => {
if (admin) {
await new Promise((resolve, reject) => {
users.push(resolve);
ctx.body = ctx.render('templates/frontpage.pug', {messages: messages});
});
}
else {
ctx.redirect('/registration');
await next();
}
})
.get('/registration', async (ctx, next) => {
ctx.body = ctx.render('templates/registration.pug');
await next();
})
.post('/log_in', async ctx => {
admin = ctx.request.body;
ctx.redirect('/feed');
})
.post('/message', async ctx => {
messages.push(ctx.request.body.msg);
users.forEach(resolve => {
resolve(ctx.request.body.msg);
});
});
app.use(async (ctx, next) => {
ctx.render = (templatePath, locals) => {
return Pug.renderFile(templatePath, locals);
}
await next();
});
app.use(koaStatic(__dirname + '/public'));
app.use(koaBody());
app.use(router.routes());
app.use(router.allowedMethods());
http.createServer(app.callback()).listen(5000);