Erzwinge das Schließen aller Verbindungen in einem node.js http-Server

Ich habe einen http-Server erstellt mit:

var server = http.createServer()

Ich möchte den Server herunterfahren. Vermutlich würde ich dies tun, indem ich anrufe:

server.close()

Dies verhindert jedoch nur, dass der Server neue http-Verbindungen empfängt. Es schließt keine, die noch offen sind.http.close() nimmt einen Rückruf entgegen und dieser Rückruf wird erst ausgeführt, wenn alle offenen Verbindungen tatsächlich getrennt wurden. Gibt es eine Möglichkeit, alles zu schließen?

Die Wurzel des Problems ist für mich, dass ich Mocha-Tests habe, die einen http-Server in ihrem Setup starten (beforeEach()) und dann in ihrem Teardown herunterfahren (afterEach()). Aber da ruft einfach anserver.close() wird nicht vollständig heruntergefahren, die folgendenhttp.createServer() führt oft zu einerEADDRINUSE Error. Warten aufclose() Das Beenden ist auch keine Option, da offene Verbindungen eine sehr lange Zeit in Anspruch nehmen können.

Ich brauche eine Möglichkeit, um Verbindungen zu erzwingen. Ich kann dies clientseitig tun, aber alle meine Testverbindungen müssen geschlossen werden, aber ich möchte es lieber serverseitig tun, d. H. Dem http-Server nur anweisen, alle Sockets fest zu schließen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage