Задать вопрос
dmc1989
@dmc1989

Почему не работает сервер на Koa?

Пытаюсь сделать простой чат на 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);
  • Вопрос задан
  • 327 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 10:44
130000 руб./за проект
18 дек. 2024, в 10:02
7000 руб./за проект
18 дек. 2024, в 09:56
8000 руб./за проект