Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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
Node.js 如何暂停http服务器并恢复它?_Node.js - Fatal编程技术网

Node.js 如何暂停http服务器并恢复它?

Node.js 如何暂停http服务器并恢复它?,node.js,Node.js,我试图创建一个简单的http服务器,它可以是暂停和恢复,我已经在这里查看了NodeJSAPI 但这对我没有帮助,我已尝试删除“请求”事件上的事件侦听器并添加回,这很有效,但每次我尝试暂停并恢复时,侦听回调调用都会增加,下面是我执行的一些代码: var httpServer = require('http').Server(); var resumed = 0; function ListenerHandler(){ console.log('[-] HTTP Server runnin

我试图创建一个简单的http服务器,它可以是暂停和恢复,我已经在这里查看了NodeJSAPI

但这对我没有帮助,我已尝试删除“请求”事件上的事件侦听器并添加回,这很有效,但每次我尝试暂停并恢复时,侦听回调调用都会增加,下面是我执行的一些代码:

var httpServer = require('http').Server();
var resumed = 0;

function ListenerHandler(){
    console.log('[-] HTTP Server running at 127.0.0.1:2525');
};

function RequestHandler(req,res){
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.end('Hello, World');
};

function pauseHTTP(){
     if(resumed){
            httpServer.removeAllListeners('request');
            httpServer.close();
            resumed = 0;
            console.log('[-] HTTP Server Paused');
     }
};

function resumeHTTP(){
    resumed = 1;
    httpServer.on('request',RequestHandler);
    httpServer.listen(2525,'127.0.0.1',ListenerHandler);
    console.log('[-] HTTP Server Resumed');
};

我不太清楚你想做什么,但我认为你在做你想做的事情时处于错误的水平

如果要阻止对web服务器的传入连接请求,直到服务器准备好处理它们,则需要停止调用套接字上的
accept(2)
系统调用。(我无法想象node.js或任何web服务器会使这项任务变得非常简单。
请求
回调无疑只有在会话启动后收到完整格式的请求时才会调用。)您的操作系统内核将继续接受连接,直到
listen(2)
系统调用达到最大积压时间。对于速度较慢的站点,这可能就足够了。在繁忙的网站上,这不到一眨眼

如果希望在服务器准备好处理之前拒绝到web服务器的传入连接请求,则需要
关闭(2)
侦听套接字。node.js通过使其可用,但这将破坏服务器的状态。要再次运行时,必须重新安装回调。

好的,我添加了httpServer.close();在pauseHTTP函数中,我已经在resumeHTTP函数中重新安装回调,并且在控制台中有相同的输出,第一次暂停和恢复会显示侦听日志一次,第二次显示两次!!!