@@ -7,7 +7,11 @@ import path = require("path");
7
7
import engine = require( "engine.io" ) ;
8
8
import { Client } from "./client" ;
9
9
import { EventEmitter } from "events" ;
10
- import { ExtendedError , Namespace } from "./namespace" ;
10
+ import {
11
+ ExtendedError ,
12
+ Namespace ,
13
+ NamespaceReservedEventsMap ,
14
+ } from "./namespace" ;
11
15
import { ParentNamespace } from "./parent-namespace" ;
12
16
import { Adapter , Room , SocketId } from "socket.io-adapter" ;
13
17
import * as parser from "socket.io-parser" ;
@@ -17,6 +21,12 @@ import { Socket } from "./socket";
17
21
import type { CookieSerializeOptions } from "cookie" ;
18
22
import type { CorsOptions } from "cors" ;
19
23
import type { BroadcastOperator , RemoteSocket } from "./broadcast-operator" ;
24
+ import {
25
+ EventsMap ,
26
+ DefaultEventsMap ,
27
+ EventParams ,
28
+ StrictEventEmitter ,
29
+ } from "./typed-events" ;
20
30
21
31
const debug = debugModule ( "socket.io:server" ) ;
22
32
@@ -156,8 +166,15 @@ interface ServerOptions extends EngineAttachOptions {
156
166
connectTimeout : number ;
157
167
}
158
168
159
- export class Server extends EventEmitter {
160
- public readonly sockets : Namespace ;
169
+ export class Server <
170
+ ListenEvents extends EventsMap = DefaultEventsMap ,
171
+ EmitEvents extends EventsMap = ListenEvents
172
+ > extends StrictEventEmitter <
173
+ { } ,
174
+ EmitEvents ,
175
+ NamespaceReservedEventsMap < ListenEvents , EmitEvents >
176
+ > {
177
+ public readonly sockets : Namespace < ListenEvents , EmitEvents > ;
161
178
162
179
/** @private */
163
180
readonly _parser : typeof parser ;
@@ -167,8 +184,11 @@ export class Server extends EventEmitter {
167
184
/**
168
185
* @private
169
186
*/
170
- _nsps : Map < string , Namespace > = new Map ( ) ;
171
- private parentNsps : Map < ParentNspNameMatchFn , ParentNamespace > = new Map ( ) ;
187
+ _nsps : Map < string , Namespace < ListenEvents , EmitEvents > > = new Map ( ) ;
188
+ private parentNsps : Map <
189
+ ParentNspNameMatchFn ,
190
+ ParentNamespace < ListenEvents , EmitEvents >
191
+ > = new Map ( ) ;
172
192
private _adapter ?: typeof Adapter ;
173
193
private _serveClient : boolean ;
174
194
private opts : Partial < EngineOptions > ;
@@ -248,7 +268,7 @@ export class Server extends EventEmitter {
248
268
_checkNamespace (
249
269
name : string ,
250
270
auth : { [ key : string ] : any } ,
251
- fn : ( nsp : Namespace | false ) => void
271
+ fn : ( nsp : Namespace < ListenEvents , EmitEvents > | false ) => void
252
272
) : void {
253
273
if ( this . parentNsps . size === 0 ) return fn ( false ) ;
254
274
@@ -557,8 +577,8 @@ export class Server extends EventEmitter {
557
577
*/
558
578
public of (
559
579
name : string | RegExp | ParentNspNameMatchFn ,
560
- fn ?: ( socket : Socket ) => void
561
- ) : Namespace {
580
+ fn ?: ( socket : Socket < ListenEvents , EmitEvents > ) => void
581
+ ) : Namespace < ListenEvents , EmitEvents > {
562
582
if ( typeof name === "function" || name instanceof RegExp ) {
563
583
const parentNsp = new ParentNamespace ( this ) ;
564
584
debug ( "initializing parent namespace %s" , parentNsp . name ) ;
@@ -616,7 +636,10 @@ export class Server extends EventEmitter {
616
636
* @public
617
637
*/
618
638
public use (
619
- fn : ( socket : Socket , next : ( err ?: ExtendedError ) => void ) => void
639
+ fn : (
640
+ socket : Socket < ListenEvents , EmitEvents > ,
641
+ next : ( err ?: ExtendedError ) => void
642
+ ) => void
620
643
) : this {
621
644
this . sockets . use ( fn ) ;
622
645
return this ;
@@ -629,7 +652,7 @@ export class Server extends EventEmitter {
629
652
* @return self
630
653
* @public
631
654
*/
632
- public to ( room : Room | Room [ ] ) : BroadcastOperator {
655
+ public to ( room : Room | Room [ ] ) : BroadcastOperator < EmitEvents > {
633
656
return this . sockets . to ( room ) ;
634
657
}
635
658
@@ -640,7 +663,7 @@ export class Server extends EventEmitter {
640
663
* @return self
641
664
* @public
642
665
*/
643
- public in ( room : Room | Room [ ] ) : BroadcastOperator {
666
+ public in ( room : Room | Room [ ] ) : BroadcastOperator < EmitEvents > {
644
667
return this . sockets . in ( room ) ;
645
668
}
646
669
@@ -651,7 +674,7 @@ export class Server extends EventEmitter {
651
674
* @return self
652
675
* @public
653
676
*/
654
- public except ( name : Room | Room [ ] ) : Server {
677
+ public except ( name : Room | Room [ ] ) : Server < ListenEvents , EmitEvents > {
655
678
this . sockets . except ( name ) ;
656
679
return this ;
657
680
}
@@ -662,7 +685,7 @@ export class Server extends EventEmitter {
662
685
* @return self
663
686
* @public
664
687
*/
665
- public send ( ...args : readonly any [ ] ) : this {
688
+ public send ( ...args : EventParams < EmitEvents , "message" > ) : this {
666
689
this . sockets . emit ( "message" , ...args ) ;
667
690
return this ;
668
691
}
@@ -673,7 +696,7 @@ export class Server extends EventEmitter {
673
696
* @return self
674
697
* @public
675
698
*/
676
- public write ( ...args : readonly any [ ] ) : this {
699
+ public write ( ...args : EventParams < EmitEvents , "message" > ) : this {
677
700
this . sockets . emit ( "message" , ...args ) ;
678
701
return this ;
679
702
}
@@ -694,7 +717,7 @@ export class Server extends EventEmitter {
694
717
* @return self
695
718
* @public
696
719
*/
697
- public compress ( compress : boolean ) : BroadcastOperator {
720
+ public compress ( compress : boolean ) : BroadcastOperator < EmitEvents > {
698
721
return this . sockets . compress ( compress ) ;
699
722
}
700
723
@@ -706,7 +729,7 @@ export class Server extends EventEmitter {
706
729
* @return self
707
730
* @public
708
731
*/
709
- public get volatile ( ) : BroadcastOperator {
732
+ public get volatile ( ) : BroadcastOperator < EmitEvents > {
710
733
return this . sockets . volatile ;
711
734
}
712
735
@@ -716,7 +739,7 @@ export class Server extends EventEmitter {
716
739
* @return self
717
740
* @public
718
741
*/
719
- public get local ( ) : BroadcastOperator {
742
+ public get local ( ) : BroadcastOperator < EmitEvents > {
720
743
return this . sockets . local ;
721
744
}
722
745
@@ -725,7 +748,7 @@ export class Server extends EventEmitter {
725
748
*
726
749
* @public
727
750
*/
728
- public fetchSockets ( ) : Promise < RemoteSocket [ ] > {
751
+ public fetchSockets ( ) : Promise < RemoteSocket < EmitEvents > [ ] > {
729
752
return this . sockets . fetchSockets ( ) ;
730
753
}
731
754
0 commit comments