【发布时间】: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