Javascript 浏览器更新传入数据的视图,而不是逐个更新

Javascript 浏览器更新传入数据的视图,而不是逐个更新,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,对于一个工业项目,我正在测试WebSocket的性能 我的服务器端代码在一个循环中发送10000个websocket事件,其中包含随机生成的数据。客户机在表中显示这些数据包 问题是:客户端在收到每个数据集后都不会显示它。相反,客户端在接收到所有数据集后更新视图 我在socket.io服务器端使用Node.js 第一:生成随机数据 var data = []; for(var i = 0; i<10000; i++){ data[i] = { nr: i,

对于一个工业项目,我正在测试WebSocket的性能

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

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

我在socket.io服务器端使用Node.js

第一:生成随机数据

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 )
    };
}
var数据=[];

对于(var i=0;iYou正在立即发送它们,这几乎是一次发送它们并锁定浏览器。因此,您是否建议降低它们的速度(使用setTimeout)?速度是套接字的一个参数…您不必这样做,但当您尝试更新UI 10000次时,它肯定会延迟/挂起。
for(var i = 0; i < data.length; i++){
    socket.emit('dataset', data[i]);
}
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);
});