基本问题-使用socket.io,Node JS,Express和Mongo的聊天应用

时间:2018-10-26 22:19:39

标签: node.js express socket.io

一般来说,我是新手,因此,如果答案问题似乎很直截了当,或者某些术语看起来不正确,请留出一些余地。另外,我花了最后几天试图理解这一点,因此,我的尽职调查部分也已完成。

目标: 实施聊天应用程序。用户通过身份验证后,他/她将被重定向到一个房间(对他来说是唯一的),其中包含数据库中所有用户的列表。 堆栈: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");
    }
  });
});
  1. 此/ chat GET路由呈现页面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));
});

0 个答案:

没有答案