@@ -114,6 +114,10 @@ const register = async (server, pluginOptions) => {
114
114
/* the global WebSocket server instance */
115
115
let wss = null
116
116
117
+ /* per-route timers */
118
+ const routeTimers = { }
119
+
120
+
117
121
/* perform WebSocket handling on HAPI start */
118
122
server . ext ( { type : "onPostStart" , method : ( server ) => {
119
123
/* sanity check all HAPI route definitions */
@@ -149,9 +153,6 @@ const register = async (server, pluginOptions) => {
149
153
/* per-route peer (aka client) tracking */
150
154
const routePeers = { }
151
155
152
- /* per-route timers */
153
- const routeTimers = { }
154
-
155
156
/* on WebSocket connection (actually HTTP upgrade events)... */
156
157
wss . on ( "connection" , async ( ws , req ) => {
157
158
/* find the (previously already successfully matched) HAPI route */
@@ -343,8 +344,14 @@ const register = async (server, pluginOptions) => {
343
344
344
345
/* perform WebSocket handling on HAPI stop */
345
346
server . ext ( { type : "onPreStop" , method : ( server , h ) => {
346
- /* close WebSocket server instance */
347
347
return new Promise ( ( resolve /*, reject */ ) => {
348
+ // Stop all keepalive intervals
349
+ for ( const routeId of Object . keys ( routeTimers ) ) {
350
+ clearInterval ( routeTimers [ routeId ] ) ;
351
+ delete routeTimers [ routeId ] ;
352
+ }
353
+
354
+ /* close WebSocket server instance */
348
355
if ( wss !== null ) {
349
356
/* trigger the WebSocket server to close everything */
350
357
wss . close ( ( ) => {
0 commit comments