У меня есть http-сервер, созданный с помощью:
var server = http.createServer()
Я хочу закрыть сервер. Предположительно, я сделал бы это, позвонив:
server.close()
Однако это только предотвращает получение сервером новых HTTP-соединений. Он не закрывает все, что еще открыто. http.close()
выполняет обратный вызов, и этот обратный вызов не выполняется, пока все открытые соединения фактически не отключены. Есть ли способ заставить все закрыть?
Корень проблемы для меня заключается в том, что у меня есть тесты Mocha, которые запускают HTTP-сервер в их настройке (beforeEach()
), а затем закрывают его в режиме teardown (afterEach()
). Но так как просто вызов server.close()
не будет полностью закрывать все, последующий http.createServer()
часто приводит к ошибке EADDRINUSE
. Ожидание close()
для завершения также не является опцией, поскольку открытые соединения могут занимать очень много времени.
Мне нужен способ принудительно закрыть соединения. Я могу сделать это на стороне клиента, но заставляю все мои тестовые подключения закрываться, но я предпочел бы сделать это на стороне сервера, то есть просто сообщить http-серверу о том, чтобы закрыть все сокеты.