@@ -30,6 +30,12 @@ function randomId() {
3030 return randomBytes ( 3 ) . toString ( "hex" ) ;
3131}
3232
33+ function safeGet < T > ( obj : Record < string , T > , key : string ) : T | undefined {
34+ if ( Object . prototype . hasOwnProperty . call ( obj , key ) ) {
35+ return obj [ key ] ;
36+ }
37+ }
38+
3339enum MessageType {
3440 ACQUIRE_LOCK = 0 ,
3541 ACQUIRE_LOCK_RESPONSE ,
@@ -185,7 +191,7 @@ export abstract class ClusterEngine extends Server {
185191 switch ( message . type ) {
186192 case MessageType . ACQUIRE_LOCK : {
187193 const sid = message . data . sid ;
188- const client = this . clients [ sid ] ;
194+ const client = safeGet ( this . clients , sid ) ;
189195 if ( ! client ) {
190196 return ;
191197 }
@@ -257,7 +263,7 @@ export abstract class ClusterEngine extends Server {
257263 }
258264
259265 case MessageType . PACKET : {
260- const client = this . clients [ message . data . sid ] ;
266+ const client = safeGet ( this . clients , message . data . sid ) ;
261267 if ( ! client ) {
262268 return ;
263269 }
@@ -272,7 +278,7 @@ export abstract class ClusterEngine extends Server {
272278
273279 case MessageType . UPGRADE : {
274280 const sid = message . data . sid ;
275- const client = this . clients [ sid ] ;
281+ const client = safeGet ( this . clients , sid ) ;
276282 if ( ! client ) {
277283 return ;
278284 }
@@ -331,7 +337,7 @@ export abstract class ClusterEngine extends Server {
331337 }
332338
333339 case MessageType . CLOSE : {
334- const client = this . clients [ message . data . sid ] ;
340+ const client = safeGet ( this . clients , message . data . sid ) ;
335341 if ( ! client ) {
336342 return ;
337343 }
@@ -553,7 +559,7 @@ export abstract class ClusterEngine extends Server {
553559
554560 override onWebSocket ( req : any , socket : any , websocket : any ) {
555561 const sid = req . _query . sid ;
556- if ( ! sid || this . clients [ sid ] ) {
562+ if ( ! sid || safeGet ( this . clients , sid ) ) {
557563 // @ts -expect-error onWebSocket() is private
558564 return super . onWebSocket ( req , socket , websocket ) ;
559565 }
0 commit comments