用代码实现nodejs关闭服务器
发布于 10 年前 作者 Emma0809 25234 次浏览 最后一次编辑是 8 年前

本人需要通过代码实现服务器打开关闭。 相关代码如下: var express = require(‘express’); var app = express(); var http = require(‘http’).Server(app); var io = require(‘socket.io’)(http); //打开服务器 server.prototype.openServer = function(){ http.listen(3001, function(){ console.log(‘listening on *:3001’); }); } //关闭服务器 server.prototype.stopServer = function(){ http.close(function(){ console.log(‘stop listening’); }) } 在这里我将打开和关闭服务器写成两个函数,方便调用。 但是关闭服务器代码是有问题的,当没有客户端连上服务器时,关闭服务器代码能正常工作。但当有客户端连上服务器时,http.close()并不执行。本人菜鸟一枚,不知道问题出在哪里,请求高手指点迷津,感激不尽!!

9 回复

我的express是3.16.6版本,node是v0.10.26版本

跪求大神指点

process.exit(); :D 关得彻底… 你把服务器关了,怎么再把它开启 ~

@Hi-Rube 这样的做法会让一些非冪等性(有状态)的请求中断执行,然后数据库就被搞乱啦,关闭服务器之前应该先确保停止服务、然后把剩下的请求处理完之后再down掉进程

是不是还要把socket关了?

@yorkie 对哦~ 但是我在想他要开启服务器,就必须连上服务器,但此时服务器又是关闭的,他这样做有何意义 - -!

@yorkie 是的,我的需求是外部可通过调用这两个函数随时开启和关闭服务器,使用process.exit()会把进程中断,用.close()的话,如果有客户端连上服务器就不能关闭服务器,也尝试了在.close()之前用程序断开所以客户端与服务器的连接,但效果还是不理想,不晓得大牛有没有比较好的方法。

@wuzeru 恩,我尝试了在.close()之前用程序断开所以客户端与服务器的连接,但效果还是不理想。

@Emma0809 https://github.com/mathrawka/express-graceful-exit 用这个,如果你想详细了解可以google一下:node.js close application gracefully,有很多介绍这个的文章

回到顶部