@@ -19,6 +19,8 @@ const WebsocketProvider = function WebsocketProvider(url, options) {
19
19
const _this = this ;
20
20
this . responseCallbacks = { } ;
21
21
this . notificationCallbacks = [ ] ;
22
+ this . closeCallbacks = [ ] ;
23
+ this . disconnectCallbacks = [ ]
22
24
23
25
options = options || { } ;
24
26
this . _customTimeout = options . timeout ;
@@ -191,6 +193,7 @@ WebsocketProvider.prototype.send = function(payload, callback) {
191
193
WebsocketProvider . prototype . on = function ( type , callback ) {
192
194
if ( typeof callback !== 'function' )
193
195
throw new Error ( 'The second parameter callback must be a function.' ) ;
196
+ console . log ( 'set callback' ) ; // todo remove dev item
194
197
195
198
switch ( type ) {
196
199
case 'data' :
@@ -216,8 +219,39 @@ WebsocketProvider.prototype.on = function(type, callback) {
216
219
this . disconnectedCallback = callback ;
217
220
break ;
218
221
case 'disconnect' :
222
+ this . disconnectCallbacks . push ( callback )
219
223
this . disconnectCallback = callback ;
220
224
break ;
225
+ case 'close' :
226
+ this . closeCallbacks . push ( callback )
227
+ console . log ( 'set close callback' ) ; // todo remove dev item
228
+ this . closeCallback = callback ;
229
+ break ;
230
+ }
231
+ } ;
232
+
233
+ WebsocketProvider . prototype . emit = function ( type , data ) {
234
+ if ( typeof type !== 'string' )
235
+ throw new Error ( 'The first parameter type must be a function.' ) ;
236
+
237
+ switch ( type ) {
238
+
239
+ // case 'accountsChanged':
240
+ // this.accountsChanged = callback;
241
+ // break;
242
+ // case 'disconnected':
243
+ // this.disconnectedCallback = callback;
244
+ // break;
245
+ case 'disconnect' :
246
+ this . disconnectCallbacks . forEach ( function ( callback ) {
247
+ if ( _ . isFunction ( callback ) ) callback ( data ) ;
248
+ } ) ;
249
+ break ;
250
+ case 'close' :
251
+ this . closeCallbacks . forEach ( function ( callback ) {
252
+ if ( _ . isFunction ( callback ) ) callback ( data ) ;
253
+ } ) ;
254
+ break ;
221
255
}
222
256
} ;
223
257
@@ -230,6 +264,22 @@ WebsocketProvider.prototype.removeListener = function(type, callback) {
230
264
if ( cb === callback ) _this . notificationCallbacks . splice ( index , 1 ) ;
231
265
} ) ;
232
266
break ;
267
+ // case 'accountsChanged':
268
+ // this.accountsChanged = callback;
269
+ // break;
270
+ // case 'disconnected':
271
+ // this.disconnectedCallback = callback;
272
+ // break;
273
+ case 'disconnect' :
274
+ this . disconnectCallbacks . forEach ( function ( cb , index ) {
275
+ if ( cb === callback ) _this . disconnectCallbacks . splice ( index , 1 ) ;
276
+ } ) ;
277
+ break ;
278
+ case 'close' :
279
+ this . closeCallbacks . forEach ( function ( cb , index ) {
280
+ if ( cb === callback ) _this . closeCallbacks . splice ( index , 1 ) ;
281
+ } ) ;
282
+ break ;
233
283
}
234
284
} ;
235
285
WebsocketProvider . prototype . removeAllListeners = function ( type ) {
0 commit comments