@@ -10,7 +10,6 @@ import {
1010 AllButLast ,
1111 Last ,
1212 DecorateAcknowledgementsWithMultipleResponses ,
13- DecorateAcknowledgements ,
1413 RemoveAcknowledgements ,
1514 EventNamesWithAck ,
1615 FirstNonErrorArg ,
@@ -135,11 +134,23 @@ export class Namespace<
135134 >
136135> {
137136 public readonly name : string ;
137+
138+ /**
139+ * A map of currently connected sockets.
140+ */
138141 public readonly sockets : Map <
139142 SocketId ,
140143 Socket < ListenEvents , EmitEvents , ServerSideEvents , SocketData >
141144 > = new Map ( ) ;
142145
146+ /**
147+ * A map of currently connecting sockets.
148+ */
149+ private _preConnectSockets : Map <
150+ SocketId ,
151+ Socket < ListenEvents , EmitEvents , ServerSideEvents , SocketData >
152+ > = new Map ( ) ;
153+
143154 public adapter : Adapter ;
144155
145156 /** @private */
@@ -327,6 +338,8 @@ export class Namespace<
327338 debug ( "adding socket to nsp %s" , this . name ) ;
328339 const socket = await this . _createSocket ( client , auth ) ;
329340
341+ this . _preConnectSockets . set ( socket . id , socket ) ;
342+
330343 if (
331344 // @ts -ignore
332345 this . server . opts . connectionStateRecovery ?. skipMiddlewares &&
@@ -394,7 +407,7 @@ export class Namespace<
394407 socket : Socket < ListenEvents , EmitEvents , ServerSideEvents , SocketData > ,
395408 ) => void ,
396409 ) {
397- // track socket
410+ this . _preConnectSockets . delete ( socket . id ) ;
398411 this . sockets . set ( socket . id , socket ) ;
399412
400413 // it's paramount that the internal `onconnect` logic
@@ -417,11 +430,7 @@ export class Namespace<
417430 _remove (
418431 socket : Socket < ListenEvents , EmitEvents , ServerSideEvents , SocketData > ,
419432 ) : void {
420- if ( this . sockets . has ( socket . id ) ) {
421- this . sockets . delete ( socket . id ) ;
422- } else {
423- debug ( "ignoring remove for %s" , socket . id ) ;
424- }
433+ this . sockets . delete ( socket . id ) || this . _preConnectSockets . delete ( socket . id ) ;
425434 }
426435
427436 /**
0 commit comments