@@ -11,11 +11,11 @@ export class Websocket {
11
11
12
12
websocket : WebSocket ;
13
13
14
- private internalListeners : { [ index : string ] : Function } = { } ;
14
+ private listeners : { [ channelName : string ] : { [ eventName : string ] : Function } }
15
15
16
- private channelBacklog = [ ] ;
16
+ private internalListeners : { [ eventName : string ] : Function } = { } ;
17
17
18
- private channels : { [ index : string ] : Channel } = { } ;
18
+ private channelBacklog = [ ] ;
19
19
20
20
private socketId : string ;
21
21
@@ -46,8 +46,8 @@ export class Websocket {
46
46
if ( message . channel ) {
47
47
console . log ( `Received event ${ message . event } on channel ${ message . channel } ` )
48
48
49
- if ( this . channels [ message . channel ] ) {
50
- this . channels [ message . channel ] . handleEvent ( message . event , message . data )
49
+ if ( this . listeners [ message . channel ] && this . listeners [ message . channel ] [ message . event ] ) {
50
+ this . listeners [ message . channel ] [ message . event ] ( message . data )
51
51
}
52
52
53
53
return
@@ -76,14 +76,14 @@ export class Websocket {
76
76
event : 'whoami' ,
77
77
} )
78
78
79
- // send ping every 10 seconds to keep connection alive
79
+ // send ping every 60 seconds to keep connection alive
80
80
this . pingInterval = setInterval ( ( ) => {
81
81
console . log ( 'Sending ping' )
82
82
83
83
this . send ( {
84
84
event : 'ping' ,
85
85
} )
86
- } , 10 * 1000 )
86
+ } , 60 * 1000 )
87
87
88
88
return this
89
89
}
@@ -149,8 +149,6 @@ export class Websocket {
149
149
auth : response . data . auth ,
150
150
} ,
151
151
} )
152
-
153
- this . channels [ channel . name ] = channel
154
152
} ) . catch ( ( error ) => {
155
153
console . log ( `Auth request for channel ${ channel . name } failed` )
156
154
console . error ( error )
@@ -164,8 +162,6 @@ export class Websocket {
164
162
channel : channel . name ,
165
163
} ,
166
164
} )
167
-
168
- this . channels [ channel . name ] = channel
169
165
}
170
166
}
171
167
@@ -176,15 +172,21 @@ export class Websocket {
176
172
channel : channel . name ,
177
173
} ,
178
174
} )
179
-
180
- delete this . channels [ channel . name ]
181
175
}
182
176
183
177
on ( event : string , callback : Function = null ) : void {
184
178
this . internalListeners [ event ] = callback
185
179
}
186
180
187
- unbindEvent ( event : string , callback : Function = null ) : void {
181
+ bind ( channel : Channel , event : string , callback : Function ) : void {
182
+ if ( ! this . listeners [ channel . name ] ) {
183
+ this . listeners [ channel . name ] = { }
184
+ }
185
+
186
+ this . listeners [ channel . name ] [ event ] = callback
187
+ }
188
+
189
+ unbindEvent ( channel : Channel , event : string , callback : Function = null ) : void {
188
190
if ( this . internalListeners [ event ] && ( callback === null || this . internalListeners [ event ] === callback ) ) {
189
191
delete this . internalListeners [ event ]
190
192
}
0 commit comments