1
- const parser = require ( "socket.io-parser" ) ;
2
- const debug = require ( "debug" ) ( "socket.io:client" ) ;
3
- const url = require ( "url" ) ;
1
+ import parser from "socket.io-parser" ;
2
+ import url from "url" ;
3
+ import debugModule = require( "debug" ) ;
4
+ import { IncomingMessage } from "http" ;
5
+ import { Server } from "./index" ;
6
+ import { Socket } from "./socket" ;
7
+
8
+ const debug = debugModule ( "socket.io:client" ) ;
9
+
10
+ export class Client {
11
+ public readonly conn ;
12
+ /** @package */
13
+ public readonly id : string ;
14
+
15
+ private readonly server ;
16
+ private readonly encoder ;
17
+ private readonly decoder ;
18
+ private sockets : object = { } ;
19
+ private nsps : object = { } ;
20
+ private connectBuffer : Array < string > = [ ] ;
4
21
5
- class Client {
6
22
/**
7
23
* Client constructor.
8
24
*
9
25
* @param {Server } server instance
10
26
* @param {Socket } conn
11
- * @api private
27
+ * @package
12
28
*/
13
- constructor ( server , conn ) {
29
+ constructor ( server : Server , conn ) {
14
30
this . server = server ;
15
31
this . conn = conn ;
16
32
this . encoder = server . encoder ;
17
33
this . decoder = new server . parser . Decoder ( ) ;
18
34
this . id = conn . id ;
19
- this . request = conn . request ;
20
35
this . setup ( ) ;
21
- this . sockets = { } ;
22
- this . nsps = { } ;
23
- this . connectBuffer = [ ] ;
36
+ }
37
+
38
+ /**
39
+ * @return the reference to the request that originated the Engine.IO connection
40
+ */
41
+ public get request ( ) : IncomingMessage {
42
+ return this . conn . request ;
24
43
}
25
44
26
45
/**
27
46
* Sets up event listeners.
28
- *
29
- * @api private
30
47
*/
31
- setup ( ) {
48
+ private setup ( ) {
32
49
this . onclose = this . onclose . bind ( this ) ;
33
50
this . ondata = this . ondata . bind ( this ) ;
34
51
this . onerror = this . onerror . bind ( this ) ;
@@ -45,9 +62,9 @@ class Client {
45
62
*
46
63
* @param {String } name namespace
47
64
* @param {Object } query the query parameters
48
- * @api private
65
+ * @package
49
66
*/
50
- connect ( name , query ) {
67
+ public connect ( name , query = { } ) {
51
68
if ( this . server . nsps [ name ] ) {
52
69
debug ( "connecting to namespace %s" , name ) ;
53
70
return this . doConnect ( name , query ) ;
@@ -73,9 +90,8 @@ class Client {
73
90
*
74
91
* @param {String } name namespace
75
92
* @param {String } query the query parameters
76
- * @api private
77
93
*/
78
- doConnect ( name , query ) {
94
+ private doConnect ( name , query ) {
79
95
const nsp = this . server . of ( name ) ;
80
96
81
97
if ( "/" != name && ! this . nsps [ "/" ] ) {
@@ -98,9 +114,9 @@ class Client {
98
114
/**
99
115
* Disconnects from all namespaces and closes transport.
100
116
*
101
- * @api private
117
+ * @package
102
118
*/
103
- disconnect ( ) {
119
+ public disconnect ( ) {
104
120
for ( const id in this . sockets ) {
105
121
if ( this . sockets . hasOwnProperty ( id ) ) {
106
122
this . sockets [ id ] . disconnect ( ) ;
@@ -113,9 +129,9 @@ class Client {
113
129
/**
114
130
* Removes a socket. Called by each `Socket`.
115
131
*
116
- * @api private
132
+ * @package
117
133
*/
118
- remove ( socket ) {
134
+ public remove ( socket : Socket ) {
119
135
if ( this . sockets . hasOwnProperty ( socket . id ) ) {
120
136
const nsp = this . sockets [ socket . id ] . nsp . name ;
121
137
delete this . sockets [ socket . id ] ;
@@ -127,10 +143,8 @@ class Client {
127
143
128
144
/**
129
145
* Closes the underlying connection.
130
- *
131
- * @api private
132
146
*/
133
- close ( ) {
147
+ private close ( ) {
134
148
if ( "open" == this . conn . readyState ) {
135
149
debug ( "forcing transport close" ) ;
136
150
this . conn . close ( ) ;
@@ -143,9 +157,9 @@ class Client {
143
157
*
144
158
* @param {Object } packet object
145
159
* @param {Object } opts
146
- * @api private
160
+ * @package
147
161
*/
148
- packet ( packet , opts ) {
162
+ public packet ( packet , opts ? ) {
149
163
opts = opts || { } ;
150
164
const self = this ;
151
165
@@ -173,10 +187,8 @@ class Client {
173
187
174
188
/**
175
189
* Called with incoming transport data.
176
- *
177
- * @api private
178
190
*/
179
- ondata ( data ) {
191
+ private ondata ( data ) {
180
192
// try/catch is needed for protocol violations (GH-1880)
181
193
try {
182
194
this . decoder . add ( data ) ;
@@ -187,10 +199,8 @@ class Client {
187
199
188
200
/**
189
201
* Called when parser fully decodes a packet.
190
- *
191
- * @api private
192
202
*/
193
- ondecoded ( packet ) {
203
+ private ondecoded ( packet ) {
194
204
if ( parser . CONNECT == packet . type ) {
195
205
this . connect (
196
206
url . parse ( packet . nsp ) . pathname ,
@@ -212,9 +222,8 @@ class Client {
212
222
* Handles an error.
213
223
*
214
224
* @param {Object } err object
215
- * @api private
216
225
*/
217
- onerror ( err ) {
226
+ private onerror ( err ) {
218
227
for ( const id in this . sockets ) {
219
228
if ( this . sockets . hasOwnProperty ( id ) ) {
220
229
this . sockets [ id ] . onerror ( err ) ;
@@ -226,10 +235,9 @@ class Client {
226
235
/**
227
236
* Called upon transport close.
228
237
*
229
- * @param {String } reason
230
- * @api private
238
+ * @param reason
231
239
*/
232
- onclose ( reason ) {
240
+ private onclose ( reason : string ) {
233
241
debug ( "client close with reason %s" , reason ) ;
234
242
235
243
// ignore a potential subsequent `close` event
@@ -248,15 +256,11 @@ class Client {
248
256
249
257
/**
250
258
* Cleans up event listeners.
251
- *
252
- * @api private
253
259
*/
254
- destroy ( ) {
260
+ private destroy ( ) {
255
261
this . conn . removeListener ( "data" , this . ondata ) ;
256
262
this . conn . removeListener ( "error" , this . onerror ) ;
257
263
this . conn . removeListener ( "close" , this . onclose ) ;
258
264
this . decoder . removeListener ( "decoded" , this . ondecoded ) ;
259
265
}
260
266
}
261
-
262
- module . exports = Client ;
0 commit comments