У меня есть сервер HTTP, созданный с помощью:Force закрыть все соединения в Node.js HTTP сервер
var server = http.createServer()
Я хочу, чтобы выключить сервер. Предположительно, я хотел бы сделать это по телефону:
server.close()
Однако это только предотвращает сервер от получения каких-либо новых соединений HTTP. Он не закрывает все, что еще открыто. http.close()
выполняет обратный вызов, и этот обратный вызов не выполняется, пока все открытые соединения фактически не отключены. Есть ли способ заставить все закрыть?
Корень проблемы для меня в том, что у меня есть тесты Mocha, которые запускают HTTP-сервер в их настройке (beforeEach()
), а затем закрывают его в своем разрыве (afterEach()
). Но так как только вызов server.close()
не будет полностью закрывать вещи, последующие http.createServer()
часто приводят к ошибке EADDRINUSE
. Ожидание close()
, чтобы закончить также не является вариантом, так как открытые соединения могут занимать очень много времени.
Мне нужно какое-то средство для принудительного закрытия соединений. Я могу сделать это на стороне клиента, но заставляю все мои тестовые подключения закрываться, но я предпочел бы сделать это на стороне сервера, то есть просто сообщить http-серверу о том, чтобы закрыть все сокеты.
возможный дубликат (HTTP: // StackOverflow. com/questions/14626636/how-do-i-shutdown-a-node-js-https-server-немедленно) – WiredPrairie