@@ -11,11 +11,11 @@ export class Websocket {
1111
1212 websocket : WebSocket ;
1313
14- private internalListeners : { [ index : string ] : Function } = { } ;
14+ private listeners : { [ channelName : string ] : { [ eventName : string ] : Function } }
1515
16- private channelBacklog = [ ] ;
16+ private internalListeners : { [ eventName : string ] : Function } = { } ;
1717
18- private channels : { [ index : string ] : Channel } = { } ;
18+ private channelBacklog = [ ] ;
1919
2020 private socketId : string ;
2121
@@ -46,8 +46,8 @@ export class Websocket {
4646 if ( message . channel ) {
4747 console . log ( `Received event ${ message . event } on channel ${ message . channel } ` )
4848
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 )
5151 }
5252
5353 return
@@ -76,14 +76,14 @@ export class Websocket {
7676 event : 'whoami' ,
7777 } )
7878
79- // send ping every 10 seconds to keep connection alive
79+ // send ping every 60 seconds to keep connection alive
8080 this . pingInterval = setInterval ( ( ) => {
8181 console . log ( 'Sending ping' )
8282
8383 this . send ( {
8484 event : 'ping' ,
8585 } )
86- } , 10 * 1000 )
86+ } , 60 * 1000 )
8787
8888 return this
8989 }
@@ -149,8 +149,6 @@ export class Websocket {
149149 auth : response . data . auth ,
150150 } ,
151151 } )
152-
153- this . channels [ channel . name ] = channel
154152 } ) . catch ( ( error ) => {
155153 console . log ( `Auth request for channel ${ channel . name } failed` )
156154 console . error ( error )
@@ -164,8 +162,6 @@ export class Websocket {
164162 channel : channel . name ,
165163 } ,
166164 } )
167-
168- this . channels [ channel . name ] = channel
169165 }
170166 }
171167
@@ -176,15 +172,21 @@ export class Websocket {
176172 channel : channel . name ,
177173 } ,
178174 } )
179-
180- delete this . channels [ channel . name ]
181175 }
182176
183177 on ( event : string , callback : Function = null ) : void {
184178 this . internalListeners [ event ] = callback
185179 }
186180
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 {
188190 if ( this . internalListeners [ event ] && ( callback === null || this . internalListeners [ event ] === callback ) ) {
189191 delete this . internalListeners [ event ]
190192 }
0 commit comments