【发布时间】:2019-12-04 18:30:56
【问题描述】:
我是第一次使用套接字,并创建了一个非常简单的后端和前端,以便在我们的系统上进行测试。
在本例中,我希望后端每 10 秒查询一次我们的服务器,并将结果传递给前端。
我目前将间隔设置为 10 秒,但是当我运行它时,我只能在 10 秒后得到结果 - 我希望立即得到结果,然后每 10 秒检查一次是否有变化。
我尝试过移动代码并查看什么有效,但我通常会收到一条消息,告诉我变量未定义(因为它显然在函数之外。
我的代码在下面-我知道它可能在结果和捕获中设置了间隔,所以如果有人可以帮助整理它以使其正常工作,我将不胜感激。恐怕还是有点菜鸟!
const express = require("express");
const app = express();
const server = require("http").createServer(app);
const io = require("socket.io")(server);
const oledb = require('oledb');
const smartconn =
`--myodbcconnection--`;
const db = oledb.odbcConnection(smartconn);
let command = `SELECT item FROM mytable.table LIMIT 10`
db.query(command)
.then(result => {
setInterval(function(){
io.emit("query", result.result);
}, 10000);
},
err => {
setInterval(function(){
io.emit("query", err);
}, 10000);
});
io.set("origins", "*:*");
io.on("connection", async (socket) => {
console.log("Client Successfully Connected");
});
server.listen(5000, () => {
console.log("Backend Server is running on http://localhost:5000");
});
预计结果会立即显示。以前旧方法不使用套接字,而是从前端轮询使用设置间隔,我想远离它。
【问题讨论】:
-
我现在通过将 io.emit 部分放在 io.on 函数中解决了这个问题。