javascript - 如何在 JS 中不断更新来自服务器的数据?

标签 javascript html node.js

有数据在服务器上不断更新并写入文件(每 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 的人广播数据,而且速度非常快。

Node.js是一个允许您通过 Socket.io 进行设置的示例.您可以将您的情况视为一种单向聊天 :)

关于javascript - 如何在 JS 中不断更新来自服务器的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46544506/

相关文章:

javascript - 将年份添加到日期字符串?

php - Wordpress 图像纵横比

javascript - 对齐和居中 div

html - 不相等的 Html 文本框和下拉宽度与 XHTML 1.0 strict

node.js - 每次测试前无法获取所需文件

node.js - ExpressJS 是否使用了无效的 set-cookie header ?

javascript - 将更长的 javascript 放入executeScript

javascript - Carousel (Twitter Bootstrap) + retina.js 没有按预期工作

javascript - 条形码扫描仪仅在用户位于输入框时产生 "keypress"事件。当用户不在输入框上时要听什么事件?

javascript - 让这些箭头滚动? jquery 和 html