【问题标题】:NodeJs app slows down when i used socket.io for real time updates当我使用 socket.io 进行实时更新时,NodeJs 应用程序变慢
【发布时间】:2020-12-08 08:48:09
【问题描述】:

我目前正在使用 node express 和 mongoose 开发一个送餐应用程序。我已经使用 socket.io 实时更新订单(在客户订购食物时在商店侧接收订单,而无需重新加载页面)。但是当我使用 socket.io 时应用程序变慢了。请提出最佳实施方式。

App.js

 mongoose
      .connect(MONGODB_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
      })
      .then((result) => {
        const server = app.listen(process.env.PORT || 3000);
            const io = require("socket.io")(server);
            io.on("connection", (socket) => {
              const changeStream = Order.watch();
              changeStream.on("change", (data) => {
                console.log("changes here " + data); 
                socket.emit("changeData", data.fullDocument);
              });
            });
      })
      .catch((err) => {
        res.render("500");
        console.log(err);
      });

order.ejs

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.3.0/socket.io.js"></script>
  <script>
    $(function () {
      var ssid = {
        "id": "<%=sid%>"
      };
      var socket = io.connect('http://localhost:3000');
      
      socket.on('changeData', function (msg) {
       
        if (msg != null && msg.shopId == ssid.id) {
              //here i have and appended the data using dom manipulation  
          
          }
   
        }
      });
    });
  </script>

【问题讨论】:

    标签: node.js mongodb express socket.io


    【解决方案1】:
    mongoose
      .connect(MONGODB_URI, {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
      })
      .then((result) => {
        const server = app.listen(process.env.PORT || 3000);
            const io = require("socket.io")(server);
            io.on("connection", (socket) => {
              console.log("connected");
            });
            const changeStream = Order.watch();
              changeStream.on("change", (data) => {
                io.emit("changeData", data.fullDocument);
              });
      })
      .catch((err) => {
        res.render("500");
        console.log(err);
      });
    

    当我在连接外部发出事件时,我的问题解决了

    【讨论】:

      猜你喜欢
      • 2021-04-18
      • 1970-01-01
      • 2020-09-28
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2014-09-04
      • 1970-01-01
      • 2018-01-29
      相关资源
      最近更新 更多