Socket.IO事件得到太多时间开火

时间:2018-02-18 10:36:19

标签: jquery node.js socket.io chatbot

我在聊天应用中使用socket.io。 (HTML + JS& node js)。当一个客户端连接到它时,它工作得很好。

但是当打开另一个窗口开始聊天时,聊天变得非常慢。当三个或四个用户同时连接到聊天时,它变得更慢,看起来,它几乎被冻结了。

仅供参考,在整个申请过程中,我使用了World(并且没有回调)。我的要求是,从客户端收到消息,回复客户端。用户将与机器人(服务器)聊天。据说,用户(发送到服务器)发送的消息不会被发送给任何其他用户。所以,我发现socket.emit()是处理这种情况的正确方法。

我弄错了吗?我应该用其他方式发光吗?

注意: -

当使用内置节点js服务器在enide工作室内运行时,该应用程序可以正常工作。但是,部署时,事件非常缓慢。

更新: -

我尝试在Chrome中启动聊天,在IE中进行另一次聊天。同样的问题。所以,问题不在于客户端。

更新2: - 当我调试时,我发现问题出在socket.emit() 并带有回调。以下是导致问题的片段

socket.emit()

在控制台中,我在 check 2 &之间的时间差距很大。 检查3

以下是控制台日志

//socketRouter.js
exports.requestData = function(callback)
{
    console.log("check 1");
    this.socket.emit('requestData',callback);
}

//flow.js
    function flow()
    {
        pipeline([
                socketRouter.requestData,
                processData
                ],
           {socket:socket});
    }


var pipeline = function(funcs, scope) {
    (function next() {
        if(funcs.length > 0) {
              funcs.shift().apply(scope || {}, [next].concat(Array.prototype.slice.call(arguments, 0)));
              console.log("check 2");
          }
    })();
};

function processData()
{
    console.length("check 3");  
    //process continues...
}

//client side
socket.on('requestData', function(callback) {
        console.log("UI check");
        if(typeof callback === "function")
            callback(data);
});

我开始怀疑check 1 check 2 //program freezes here for sometime. check 3 socket.emit()函数是否真的存在问题。但是pipeline()函数在应用程序的所有其他部分中运行得非常好。

0 个答案:

没有答案