【发布时间】:2017-01-16 21:41:48
【问题描述】:
好的,我正在创建一个 NodeJS 应用程序。 它涉及向 API 发送 HTTP 请求,该 API 返回 JSON 数据,我想使用 socket.io 实时显示给客户端 我正在使用 setInterval() 非常“x”秒运行该函数。
我希望声明一个全局变量,然后在建立连接时调用该函数(socket.io),然后使用 setInterval() 但它似乎没有成功。
问题: 它在前“x”秒内显示未定义的数据。 这是我的代码(我正在删除不必要的部分)
var globalObject = {}
function APICall () {
request.get(APIUrl, function (error, response, body) {
globalObject = JSON.parse(body)
})}
io.on('connection', function (socket) {
APICall()
socket.emit('newdata', globalObject)
}
setInterval(function () {
request.get(bitstampAPI, function (error, response, body) {
bitstamp = JSON.parse(body)
socket.emit('price', bitstamp)
})
}, 10000)
})
P.S:忽略大括号和括号错误,我从我的应用程序中删除了一些不必要的逻辑,因此其中可能存在一些问题。
底线:在前 10 秒,socket.io 发出一个没有数据的对象,之后,setInterval() 启动并从 API 发送数据
【问题讨论】:
-
您需要向
bitstampAPI发出初始请求以首先获取数据,因为setInterval在 10 秒后才会发出第一个请求
标签: javascript node.js function websocket socket.io