代码之家  ›  专栏  ›  技术社区  ›  Jo D

Marinette/Backbone应用程序的服务器(套接字)过载

  •  0
  • Jo D  · 技术社区  · 10 年前

    我是一名新程序员,学习Marinette制作会议预订应用程序。我已经四处打听了好几个小时了。

    基本上,问题是,当我添加会议时,会随机创建新的会议,并导致服务器过载。我想知道这是否与某种循环或内存泄漏有关,而我在设置中没有意识到这种情况。

    以下是创建会议的代码: https://github.com/jdaudier/meeting-booker/blob/master/public/javascripts/app.js

    该bug的短视频:screencast.com/t/3rHIqPm07F

    错误图像:

    http://screencast.com/t/feN5sbZBWzHe

    screencast.com/t/Yuzys5Xizu

    1 回复  |  直到 10 年前
        1
  •  2
  •   Derick Bailey    10 年前

    事实证明,客户端代码没有任何问题。另一方面,您的服务器代码中有一个微妙的错误,导致浏览器行为异常。

    在/routes/meeting.js文件中,第83-89行:

        meeting.save(function(err){
            if(!err){
              return console.log('created a new meeting:', meeting.title);
            } else {
              return console.log(err);
            }
            return res.send(meeting);
        });
    

    您永远不会返回此方法的响应,因为您有 return if 检查因此,浏览器永远不会看到响应,并等待大约90秒(我认为),然后退出AJAX调用。

    尝试6次失败的原因是,您已达到5个开放网络连接的浏览器限制。

    修复方法是删除不需要的 回来 在记录 created a new meeting 消息

    
        meeting.save(function(err){
            if(err){
              return console.log(err);
            }
            console.log('created a new meeting:', meeting.title);
            return res.send(meeting);
        });
    

    修复后,浏览器从服务器获得适当的200OK响应,并关闭连接。在将此修复程序放入服务器代码后,我能够运行约15次会议添加,没有任何问题。