我使用NodeJS + Express构建了一个简单的Web应用程序,请求和socket.io模块从外部API获取JSON数据,然后使用websocket将其传输到客户端。
如果外部请求的JSON数据发生了变化,我想做的只是通过websocket进行传输。
我无法弄清楚如何使用我目前提出的代码添加此条件:
io.on('connection', function (socket) {
setInterval(function () {
request({
url: url,
json: true
}, function (error, response, body) {
var senddata = JSON.stringify(body.result).toLowerCase();
if (!error && response.statusCode === 200) {
socket.emit('result', senddata);
}
})
}, 3000)
});
答案 0 :(得分:0)
您可以将每个套接字的最后数据存储在对象中,然后将其与senddata
进行比较:
var lastData = {}; //declare an object
io.on('connection', function (socket) {
setInterval(function () {
request({
url: url,
json: true
}, function (error, response, body) {
var senddata = JSON.stringify(body.result).toLowerCase();
if (!error && response.statusCode === 200) {
if (senddata !== lastData[socket.id]) { //compare senddata with last data
lastData[socket.id] = senddata; //store new last data
socket.emit('result', senddata);
}
}
})
}, 3000)
});
希望这有帮助。