@@ -34,6 +34,7 @@ class Server {
3434 this . staticWatchers = [ ] ;
3535 // Keep track of websocket proxies for external websocket upgrade.
3636 this . webSocketProxies = [ ] ;
37+ this . sockets = [ ] ;
3738 this . compiler = compiler ;
3839 }
3940
@@ -60,31 +61,6 @@ class Server {
6061 return / ^ [ a - z A - Z ] [ a - z A - Z \d + \- . ] * : / . test ( URL ) ;
6162 }
6263
63- static killable ( server ) {
64- let sockets = [ ] ;
65-
66- server . on ( "connection" , ( socket ) => {
67- // add socket to list
68- sockets . push ( socket ) ;
69-
70- socket . once ( "close" , ( ) => {
71- // remove socket from list
72- sockets . splice ( sockets . indexOf ( socket ) , 1 ) ;
73- } ) ;
74- } ) ;
75-
76- server . kill = ( cb ) => {
77- server . close ( cb ) ;
78- sockets . forEach ( ( socket ) => {
79- socket . destroy ( ) ;
80- } ) ;
81- // reset so the server can be restarted
82- sockets = [ ] ;
83- } ;
84-
85- return server ;
86- }
87-
8864 static async getHostname ( hostname ) {
8965 if ( hostname === "local-ip" ) {
9066 return ( await internalIp . v4 ( ) ) || ( await internalIp . v6 ( ) ) || "0.0.0.0" ;
@@ -706,8 +682,6 @@ class Server {
706682 this . setupFeatures ( ) ;
707683 this . createServer ( ) ;
708684
709- Server . killable ( this . server ) ;
710-
711685 if ( this . options . setupExitSignals ) {
712686 const signals = [ "SIGINT" , "SIGTERM" ] ;
713687
@@ -1190,6 +1164,16 @@ class Server {
11901164 this . server = http . createServer ( this . app ) ;
11911165 }
11921166
1167+ this . server . on ( "connection" , ( socket ) => {
1168+ // add socket to list
1169+ this . sockets . push ( socket ) ;
1170+
1171+ socket . once ( "close" , ( ) => {
1172+ // remove socket from list
1173+ this . sockets . splice ( this . sockets . indexOf ( socket ) , 1 ) ;
1174+ } ) ;
1175+ } ) ;
1176+
11931177 this . server . on ( "error" , ( error ) => {
11941178 throw error ;
11951179 } ) ;
@@ -1811,7 +1795,13 @@ class Server {
18111795
18121796 if ( this . server ) {
18131797 await new Promise ( ( resolve ) => {
1814- this . server . kill ( ( ) => {
1798+ this . server . kill ( ( cb ) => {
1799+ this . server . stopCallback ( cb ) ;
1800+ this . sockets . forEach ( ( socket ) => {
1801+ socket . destroy ( ) ;
1802+ } ) ;
1803+ // reset so the server can be restarted
1804+ this . sockets = [ ] ;
18151805 resolve ( ) ;
18161806 } ) ;
18171807 } ) ;
0 commit comments