如何将数据从数组逐个发送到socket.io.

时间:2018-06-01 16:28:01

标签: node.js websocket socket.io

当用户连接到网站时,我有一个内部有1000个对象的数组我想逐个发送给他这个数据。但不幸的是,这段代码不起作用。

{{1}}

当我打开浏览器时,我需要等待1.5秒,然后我才会收到所有数据。您是否知道如何逐个接收这些数据,以便实时。谢谢

1 个答案:

答案 0 :(得分:0)

我找到了如何实现这一目标的方法。我认为,因为我在库存浏览器上同时发送了这么多数据无法刷新,1秒后(添加所有数据)浏览器刷新并显示所有数据。我不确定我的理解是否正确。但这里是我添加的代码,以使其有效。

io.on('connection', (socket) =>{
 console.log('made socket connection');
 var senddata = function(i){

    if(i<data.length){
        socket.emit('initial', data[i], function(confirmation){
            i++       
            senddata(i);
        });
    }
 }
 senddata(0);
}

所以你怎么看我在等待回调,所以现在我看到数据一个接一个出现。但由于回调所以请求客户端 - 服务器和服务器 - 客户端,它需要花费更多的时间来加载浏览器中的所有数据。这就是我改变向浏览器发送部分数据的方法,并且不为每个数组数据进行少量回调。我编写了一个简单的函数来分割几个较小的数组,所以现在我们在浏览器和服务器之间拆分工作。

io.on('connection', (socket) =>{
 console.log('made socket connection');
 function sendinit(start, jump){
    var last = start+jump;
    if(last<data.length){
        socket.emit('initial', data.slice(start,last), function(confirmation){
            sendinit(last,jump);
        });
    }
    else if(last>=data.length){
        socket.emit('initial', data.slice(start,data.length), function(confirmation){
            console.log('data have been sent');
        });
    }
 }
 sendinit(0,200);
}

我在等你的评论,你怎么看待这种方法?