有数据在服务器上不断更新并写入文件(每 100 毫秒),我需要将其传输到客户端,暂时我通过 setInterval 函数(应该检查它们)在相同的时间间隔),检查这个 JSON 文件,我不确定它是否是问题的正确解决方案。
服务器端代码:
function SerialPortStart(COM, Input){
console.log( COM, Input);
var serialPort = new SerialPort(COM, {
parser: SerialPort.parsers.readline('\n'),
baudrate: +Input || 9600
});
serialPort.on('data', function (data) {
thermodata = data.toString();
console.log(data);
fs.writeFileSync(__dirname +'/views/cockpit.json',JSON.stringify(thermodata));
});
};
客户端代码:
function SerialPortStart(){
var xhr = new XMLHttpRequest();
setInterval(function() {
xhr.open('GET', 'cockpit.json', true);
xhr.send();
xhr.onreadystatechange = function() {
if(this.status == 200) {
var data = JSON.parse(xhr.responseText);
console.log(data);
obj = data.split(';');
if(cockpitNum[3] != null){
$('header .mainBlock1 .cockpit .elements .blockHaw .cirle').css({
transform: 'rotate('+(obj[cockpitNum[3]]) +'deg)'
}); }
}, 50);
最佳答案
您现在已经不在 AJAX 领域了。一个正常的请求可能需要大约 500 毫秒才能完成,这很慢,除此之外,它会消耗大量资源。
是时候学习 Websockets 了。 websocket 是(有点)一个小连接(就像 http),但它不会关闭(不像 http 在调用结束时关闭)。通过这种方式,您可以向所有连接到 websocket 的人广播数据,而且速度非常快。
关于javascript - 如何在 JS 中不断更新来自服务器的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544506/