File tree Expand file tree Collapse file tree 2 files changed +37
-2
lines changed
packages/socket.io-client Expand file tree Collapse file tree 2 files changed +37
-2
lines changed Original file line number Diff line number Diff line change @@ -542,8 +542,7 @@ export class Socket<
542542
543543 args . push ( ( err , ...responseArgs ) => {
544544 if ( packet !== this . _queue [ 0 ] ) {
545- // the packet has already been acknowledged
546- return ;
545+ return debug ( "packet [%d] already acknowledged" , packet . id ) ;
547546 }
548547 const hasError = err !== null ;
549548 if ( hasError ) {
Original file line number Diff line number Diff line change @@ -110,4 +110,40 @@ describe("retry", () => {
110110 } , 100 ) ;
111111 } ) ;
112112 } ) ;
113+
114+ it . only ( "should not emit a packet twice in the 'connect' handler" , ( ) => {
115+ return wrap ( ( done ) => {
116+ const socket = io ( BASE_URL , {
117+ forceNew : true ,
118+ retries : 3 ,
119+ } ) ;
120+
121+ const received : string [ ] = [ ] ;
122+ const sent : string [ ] = [ ] ;
123+
124+ socket . io . engine . on ( "packetCreate" , ( { data } ) => {
125+ sent . push ( data ) ;
126+ } ) ;
127+
128+ socket . io . engine . on ( "packet" , ( { data } ) => {
129+ received . push ( data ) ;
130+ } ) ;
131+
132+ socket . on ( "connect" , ( ) => {
133+ socket . emit ( "echo" , null ) ;
134+ } ) ;
135+
136+ setTimeout ( ( ) => {
137+ expect ( sent ) . to . eql ( [ "0" , '20["echo",null]' ] ) ;
138+
139+ expect ( received . length ) . to . eql ( 3 ) ;
140+ // 1: engine.io OPEN packet
141+ // 2: socket.io CONNECT packet
142+ // 3: ack packet
143+ expect ( received [ 2 ] ) . to . eql ( "30[null]" ) ;
144+
145+ success ( done , socket ) ;
146+ } , 100 ) ;
147+ } ) ;
148+ } ) ;
113149} ) ;
You can’t perform that action at this time.
0 commit comments