Основной вопрос - приложение чата с использованием socket.io, Node JS, Express и Mongo - PullRequest
0 голосов
/ 27 октября 2018

Я новичок в разработке в целом, поэтому, если ответ на вопрос кажется очень простым или если некоторая терминология кажется неверной, тогда, пожалуйста, разрешите некоторую свободу действий.Кроме того, я провел последние несколько дней, пытаясь понять это, поэтому моя часть должной осмотрительности также была выполнена.

Цель: Внедрить приложение для чата.После аутентификации пользователя он / она перенаправляется в комнату (уникальную для него) со списком всех пользователей в БД.Стек: Socket.io, Node JS, Express, EJS и Mongo DB

Я реализовал API, который будет проверять, существует ли пользователь в БД, и перенаправлять успешных пользователей.

Я считаю,У меня есть понимание механизма socket.io, то есть события могут генерироваться и потребляться либо сервером, либо клиентом.

Проблема в том, что я понимаю, как связать 2 (передача данных из Express /EJS в socket.io) вместе

Что я хотел бы иметь - 1. POST-маршрут аутентифицирует пользователя и перенаправляет на / chat GET-маршрут (На данный момент я не использую настоящую аутентификацию)

app.post("/login", (req, res) => {
  db.User.findOne({ email: req.body.email }, (err, user) => {
    if (!user) {
      res.send("user not found");
    } else if (err) {
      console.log(err);
    } else {
      res.redirect("/chat");
    }
  });
});

Этот маршрут GET / chat отображает страницу index.ejs

app.get ("/ chat", (req, res) => res.render ("index"));

3. В index.ejs я хотел бы получить информацию о пользователе, прошедшем проверку, обо всех пользователях в БД.Это, я полагаю, исходит от почтового маршрута.Я знаю, как передавать данные из Express в шаблон EJS, но не при использовании socket.io.

Код Socket.io

ChatNsp.on("connection", client => {
  console.log(`Client ${client.id} connected`);
  client.emit("my event", { custom: "data" });

  client.on("disconnect", () =>
    console.log("Client " + client.id + " disconnected")
  );
});
Any pointers would be appreciated. I've been trying to figure this out for the last few days.

Код клиента

const socket = io.connect("/chat");

socket.on("connect", function() {
  alert("Connected to the server");

  socket.on("my event", data => console.log(data));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...