@@ -4,8 +4,14 @@ import { decode } from "./contrib/parseqs.js";
4
4
import { parse } from "./contrib/parseuri.js" ;
5
5
import debugModule from "debug" ; // debug()
6
6
import { Emitter } from "@socket.io/component-emitter" ;
7
- import { protocol } from "engine.io-parser" ;
8
- import { CloseDetails } from "./transport.js" ;
7
+ import {
8
+ protocol ,
9
+ type Packet ,
10
+ type BinaryType ,
11
+ type PacketType ,
12
+ RawData ,
13
+ } from "engine.io-parser" ;
14
+ import { CloseDetails , Transport } from "./transport.js" ;
9
15
10
16
const debug = debugModule ( "engine.io-client:socket" ) ; // debug()
11
17
@@ -221,11 +227,19 @@ export interface SocketOptions {
221
227
protocols : string | string [ ] ;
222
228
}
223
229
230
+ interface HandshakeData {
231
+ sid : string ;
232
+ upgrades : string [ ] ;
233
+ pingInterval : number ;
234
+ pingTimeout : number ;
235
+ maxPayload : number ;
236
+ }
237
+
224
238
interface SocketReservedEvents {
225
239
open : ( ) => void ;
226
- handshake : ( data ) => void ;
227
- packet : ( packet ) => void ;
228
- packetCreate : ( packet ) => void ;
240
+ handshake : ( data : HandshakeData ) => void ;
241
+ packet : ( packet : Packet ) => void ;
242
+ packetCreate : ( packet : Packet ) => void ;
229
243
data : ( data ) => void ;
230
244
message : ( data ) => void ;
231
245
drain : ( ) => void ;
@@ -240,13 +254,19 @@ interface SocketReservedEvents {
240
254
close : ( reason : string , description ?: CloseDetails | Error ) => void ;
241
255
}
242
256
243
- export class Socket extends Emitter < { } , { } , SocketReservedEvents > {
257
+ type SocketState = "opening" | "open" | "closing" | "closed" ;
258
+
259
+ export class Socket extends Emitter <
260
+ Record < never , never > ,
261
+ Record < never , never > ,
262
+ SocketReservedEvents
263
+ > {
244
264
public id : string ;
245
- public transport : any ;
246
- public binaryType : string ;
265
+ public transport : Transport ;
266
+ public binaryType : BinaryType ;
267
+ public readyState : SocketState ;
268
+ public writeBuffer : Packet [ ] = [ ] ;
247
269
248
- private readyState : string ;
249
- private writeBuffer ;
250
270
private prevBufferLen : number ;
251
271
private upgrades ;
252
272
private pingInterval : number ;
@@ -271,9 +291,8 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
271
291
/**
272
292
* Socket constructor.
273
293
*
274
- * @param {String|Object } uri or options
294
+ * @param {String|Object } uri - uri or options
275
295
* @param {Object } opts - options
276
- * @api public
277
296
*/
278
297
constructor ( uri , opts : Partial < SocketOptions > = { } ) {
279
298
super ( ) ;
@@ -317,7 +336,6 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
317
336
: "80" ) ;
318
337
319
338
this . transports = opts . transports || [ "polling" , "websocket" ] ;
320
- this . readyState = "" ;
321
339
this . writeBuffer = [ ] ;
322
340
this . prevBufferLen = 0 ;
323
341
@@ -387,9 +405,9 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
387
405
/**
388
406
* Creates transport of the given type.
389
407
*
390
- * @param {String } transport name
408
+ * @param {String } name - transport name
391
409
* @return {Transport }
392
- * @api private
410
+ * @private
393
411
*/
394
412
private createTransport ( name ) {
395
413
debug ( 'creating transport "%s"' , name ) ;
@@ -425,7 +443,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
425
443
/**
426
444
* Initializes transport to use and starts probe.
427
445
*
428
- * @api private
446
+ * @private
429
447
*/
430
448
private open ( ) {
431
449
let transport ;
@@ -463,7 +481,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
463
481
/**
464
482
* Sets the current transport. Disables the existing one (if any).
465
483
*
466
- * @api private
484
+ * @private
467
485
*/
468
486
private setTransport ( transport ) {
469
487
debug ( "setting transport %s" , transport . name ) ;
@@ -487,8 +505,8 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
487
505
/**
488
506
* Probes a transport.
489
507
*
490
- * @param {String } transport name
491
- * @api private
508
+ * @param {String } name - transport name
509
+ * @private
492
510
*/
493
511
private probe ( name ) {
494
512
debug ( 'probing transport "%s"' , name ) ;
@@ -600,7 +618,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
600
618
/**
601
619
* Called when connection is deemed open.
602
620
*
603
- * @api private
621
+ * @private
604
622
*/
605
623
private onOpen ( ) {
606
624
debug ( "socket open" ) ;
@@ -611,11 +629,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
611
629
612
630
// we check for `readyState` in case an `open`
613
631
// listener already closed the socket
614
- if (
615
- "open" === this . readyState &&
616
- this . opts . upgrade &&
617
- this . transport . pause
618
- ) {
632
+ if ( "open" === this . readyState && this . opts . upgrade ) {
619
633
debug ( "starting upgrade probes" ) ;
620
634
let i = 0 ;
621
635
const l = this . upgrades . length ;
@@ -628,7 +642,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
628
642
/**
629
643
* Handles a packet.
630
644
*
631
- * @api private
645
+ * @private
632
646
*/
633
647
private onPacket ( packet ) {
634
648
if (
@@ -676,9 +690,9 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
676
690
* Called upon handshake completion.
677
691
*
678
692
* @param {Object } data - handshake obj
679
- * @api private
693
+ * @private
680
694
*/
681
- private onHandshake ( data ) {
695
+ private onHandshake ( data : HandshakeData ) {
682
696
this . emitReserved ( "handshake" , data ) ;
683
697
this . id = data . sid ;
684
698
this . transport . query . sid = data . sid ;
@@ -695,7 +709,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
695
709
/**
696
710
* Sets and resets ping timeout timer based on server pings.
697
711
*
698
- * @api private
712
+ * @private
699
713
*/
700
714
private resetPingTimeout ( ) {
701
715
this . clearTimeoutFn ( this . pingTimeoutTimer ) ;
@@ -710,7 +724,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
710
724
/**
711
725
* Called on `drain` event
712
726
*
713
- * @api private
727
+ * @private
714
728
*/
715
729
private onDrain ( ) {
716
730
this . writeBuffer . splice ( 0 , this . prevBufferLen ) ;
@@ -730,7 +744,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
730
744
/**
731
745
* Flush write buffers.
732
746
*
733
- * @api private
747
+ * @private
734
748
*/
735
749
private flush ( ) {
736
750
if (
@@ -782,32 +796,31 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
782
796
/**
783
797
* Sends a message.
784
798
*
785
- * @param {String } message.
786
- * @param {Function } callback function.
799
+ * @param {String } msg - message.
787
800
* @param {Object } options.
801
+ * @param {Function } callback function.
788
802
* @return {Socket } for chaining.
789
- * @api public
790
803
*/
791
- public write ( msg , options , fn ?) {
804
+ public write ( msg : RawData , options ? , fn ?) {
792
805
this . sendPacket ( "message" , msg , options , fn ) ;
793
806
return this ;
794
807
}
795
808
796
- public send ( msg , options , fn ?) {
809
+ public send ( msg : RawData , options ? , fn ?) {
797
810
this . sendPacket ( "message" , msg , options , fn ) ;
798
811
return this ;
799
812
}
800
813
801
814
/**
802
815
* Sends a packet.
803
816
*
804
- * @param {String } packet type.
817
+ * @param {String } type: packet type.
805
818
* @param {String } data.
806
819
* @param {Object } options.
807
- * @param {Function } callback function.
808
- * @api private
820
+ * @param {Function } fn - callback function.
821
+ * @private
809
822
*/
810
- private sendPacket ( type , data ?, options ?, fn ?) {
823
+ private sendPacket ( type : PacketType , data ?: RawData , options ?, fn ?) {
811
824
if ( "function" === typeof data ) {
812
825
fn = data ;
813
826
data = undefined ;
@@ -838,8 +851,6 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
838
851
839
852
/**
840
853
* Closes the connection.
841
- *
842
- * @api public
843
854
*/
844
855
public close ( ) {
845
856
const close = ( ) => {
@@ -884,7 +895,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
884
895
/**
885
896
* Called upon transport error
886
897
*
887
- * @api private
898
+ * @private
888
899
*/
889
900
private onError ( err ) {
890
901
debug ( "socket error %j" , err ) ;
@@ -896,7 +907,7 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
896
907
/**
897
908
* Called upon transport close.
898
909
*
899
- * @api private
910
+ * @private
900
911
*/
901
912
private onClose ( reason : string , description ?: CloseDetails | Error ) {
902
913
if (
@@ -946,9 +957,8 @@ export class Socket extends Emitter<{}, {}, SocketReservedEvents> {
946
957
/**
947
958
* Filters upgrades, returning only those matching client transports.
948
959
*
949
- * @param {Array } server upgrades
950
- * @api private
951
- *
960
+ * @param {Array } upgrades - server upgrades
961
+ * @private
952
962
*/
953
963
private filterUpgrades ( upgrades ) {
954
964
const filteredUpgrades = [ ] ;
0 commit comments