微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

强制关闭node.js http服务器中的所有连接

我有一个http服务器创建使用:

var server = http.createServer()

我想关闭服务器.大概我会这样做:

server.close()

但是,这只会阻止服务器接收任何新的http连接.它不关闭任何仍然是开放的. http.close()接受回调,并且在所有打开的连接实际上已断开连接之前,该回调不会执行.有办法强制关闭一切吗?

问题的根源在于我有Mocha测试,在他们的设置(beforeEach())中启动一个http服务器,然后在拆分(afterEach())中关闭它.但是由于刚刚调用server.close()将不会完全关闭,所以后续的http.createServer()通常会导致EADDRINUSE错误.等待close()完成也不是一个选择,因为开放连接可能需要很长时间才能超时.

我需要一些强制关闭连接的方法.我可以做这个客户端,但是迫使我的所有测试连接关闭,但我宁愿在服务器端执行操作,即只是告诉HTTP服务器硬关闭所有套接字.

解决方法

你需要

>订阅服务器的连接事件,并将打开的套接添加到数组
通过订阅他们的关闭事件并从阵列中移除已关闭的事件来跟踪打开的套接
>当您需要终止服务器时,在所有剩余的开放套接字上调用destroy

您也有机会在子进程中运行服务器,并在需要时退出该进程.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐