浏览器不是一个一个地更新传入数据的视图

时间:2015-03-11 16:24:30

标签: javascript node.js websocket socket.io

对于工业项目,我正在测试websockets的性能。

我的服务器端代码在循环中发送10000个websocket-events,其中包含随机生成的数据。客户端在表中显示这些数据包。

问题是:客户端收到后,不会显示每个数据集。而不是客户端在收到所有数据集后更新视图。

我将Node.js与socket.io服务器端一起使用。

第一:生成随机数据

var data = [];

for(var i = 0; i<10000; i++){
    data[i] = 
    {
        nr: i,
        x: Math.floor( Math.random() * 100 ),
        y: Math.floor( Math.random() * 100 )
    };
}

第二:顺序发送

for(var i = 0; i < data.length; i++){
    socket.emit('dataset', data[i]);
}

第三:客户端将tr / td-Elements添加到表

var socket = io.connect('...');
var table= $('...');

socket.on('dataset', function (data) {
    var tr = $('<tr/>').appendTo(table);
    var nr = $('<td/>')
        .text(data.nr)
        .appendTo(tr);
    var x = $('<td/>')
        .text(data.x)
        .appendTo(tr);
    var y = $('<td/>')
        .text(data.y)
        .appendTo(tr);
});

每次socket-packet到达时,浏览器都不会更新表。相反,它等待循环结束。在服务器端,事件可以逐个验证。

我的猜测是使用表是原因,但使用(丑陋)innerHTML函数具有相同的效果。

您可以在http://daniel-betz.de:1338/上查看该内容。显示数据集需要几秒钟(因为它不会逐个显示它们 - 但这就是我想要的)。请忽略德语措辞。

你有什么想法吗?提前谢谢!

0 个答案:

没有答案