socket.io和客户端上的长操作

时间:2013-10-01 14:34:52

标签: python gevent-socketio

我在服务器上使用gevent-socketio,在客户端上使用socket.io.js。建立连接后,客户端将接收应呈现的数据。渲染可能需要很长时间(最多10到15秒)。完成后,连接中止。我将调整性能,但它取决于将要呈现的数据,因此我不会大幅减少它。长JS过程后如何解决制动连接问题?

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,将渲染过程分为小和平并按顺序执行。例如,如果我需要渲染100个对象,而不是在循环中渲染它们,我只需迭代并存储函数以将每个表渲染为数组。然后我调用以下方法,放置带有动作的数组作为参数执行:

databasy.ui.utils.executeSequentially = function (functions) {
    if (functions.length == 0) {
        return;
    }
    setTimeout(function() {
        functions[0]();
        functions.splice(0, 1);
        databasy.ui.utils.executeSequentially(functions);
    }, 0);
};

如您所见,第一个函数在setTimeout中使用参数0执行。完成后,将调度下一个函数。它允许触摸循环中的其他回调(包括socket.io执行所需的那些回调)。