Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS导出阻塞代码_Javascript_Node.js_Callback_Server_Nonblocking - Fatal编程技术网

Javascript NodeJS导出阻塞代码

Javascript NodeJS导出阻塞代码,javascript,node.js,callback,server,nonblocking,Javascript,Node.js,Callback,Server,Nonblocking,我正在尝试创建一个并行运行的服务器。我主要关注两个问题: 某些方面正在阻塞,将停止正在处理的另一个请求 请求被混淆,错误的响应被发送到错误的客户端 这是我的密码: 服务器文件: 控制器文件 SQL测试文件 响应文件 基本上,这个服务器将非常大,我不可能在一个文件中有成千上万行代码。通过分解它,我是否会以任何方式损害性能,这是否会导致任何阻塞代码,服务器是否会丢失要响应的正确客户端的跟踪 一般来说,我对node和javascript还很陌生,所以我可能不理解基本概念是如何工作的。任何建议或改进都会

我正在尝试创建一个并行运行的服务器。我主要关注两个问题:

  • 某些方面正在阻塞,将停止正在处理的另一个请求
  • 请求被混淆,错误的响应被发送到错误的客户端
  • 这是我的密码:

    服务器文件:

    控制器文件

    SQL测试文件

    响应文件

    基本上,这个服务器将非常大,我不可能在一个文件中有成千上万行代码。通过分解它,我是否会以任何方式损害性能,这是否会导致任何阻塞代码,服务器是否会丢失要响应的正确客户端的跟踪

    一般来说,我对node和javascript还很陌生,所以我可能不理解基本概念是如何工作的。任何建议或改进都会大有帮助

    关注点#1,您发布的所有代码都没有阻塞,但您对此的关注是正确的。节点是单线程的,在节点中编写阻塞或需要很长时间计算的代码是个坏主意。好消息是节点是非常异步的。虽然可以按照设计公共库的方式在节点中编写阻塞代码,但您必须不遗余力地编写阻塞函数

    这个答案有很多好的细节可以帮助你了解它:

    出于担心,我不知道你的意思。如果
    res
    var以某种方式指向其他人的请求,您是否担心会调用SQL异步回调

    关于底部的简介,将所有代码放在一个文件中不会对性能产生明显影响。如果有什么问题的话,您的应用程序可能会启动得稍微快一点,因为它需要加载的模块会更少


    由于其他原因,将大量代码塞进一个文件是个坏主意。将代码拆分为模块将使代码更具可重用性,从而允许您编写更少的代码。代码越少越好。通过将数千行代码拆分为所有“做好一件事”(也称为内聚)的模块,为其提供清晰的体系结构,也将使代码更易于理解、构建和调试。

    这些都不是问题。
    var http = require('http');
    var controller = require('controller.js');
    http.createServer(function (request, response) {
        controller.handle(request, response);
    }).listen(8080, '0.0.0.0');
    
    var resp = require('./resp.js');
    var sqltest = require('/sql/sqltest.js');
    
    exports.handle = function(request, response) {
        request.on('data', function(chunk) {
            var json = JSON.parse(chunk);
            var type = parseInt(json["requestType"]);
    
            switch(type) {
                case 0:
                    sqltest.try(json, function(res){
                    resp.send(response, res);
                    });
                break;
           }
         });
    }
    
    var mysql = require('mysql');
        exports.try = function(json, callback, res) {
        -- doo database stuff --
        callback(res);
        });
    }
    
    exports.send = function(response, res){
        response.writeHead(200, ......);
        response.end(res);
    }