@@ -9,19 +9,33 @@ var abp = abp || {};
99 // Create namespaces
1010 abp . signalr = abp . signalr || { } ;
1111 abp . signalr . hubs = abp . signalr . hubs || { } ;
12+ abp . signalr . reconnectTime = abp . signalr . reconnectTime || 5000 ;
13+ abp . signalr . maxTries = abp . signalr . maxTries || 8 ;
1214
1315 // Configure the connection for abp.signalr.hubs.common
1416 function configureConnection ( connection ) {
1517 // Set the common hub
1618 abp . signalr . hubs . common = connection ;
1719
20+ let tries = 1 ;
21+ let reconnectTime = abp . signalr . reconnectTime ;
22+
1823 // Reconnect loop
19- function start ( ) {
20- connection . start ( ) . catch ( function ( ) {
21- setTimeout ( function ( ) {
22- start ( ) ;
23- } , 5000 ) ;
24- } ) ;
24+ function tryReconnect ( ) {
25+ if ( tries > abp . signalr . maxTries ) {
26+ return ;
27+ } else {
28+ connection . start ( )
29+ . then ( ( ) => {
30+ reconnectTime = abp . signalr . reconnectTime ;
31+ tries = 1 ;
32+ console . log ( 'Reconnected to SignalR server!' ) ;
33+ } ) . catch ( ( ) => {
34+ tries += 1 ;
35+ reconnectTime *= 2 ;
36+ setTimeout ( ( ) => tryReconnect ( ) , reconnectTime ) ;
37+ } ) ;
38+ }
2539 }
2640
2741 // Reconnect if hub disconnects
@@ -36,7 +50,7 @@ var abp = abp || {};
3650 return ;
3751 }
3852
39- start ( ) ;
53+ tryReconnect ( ) ;
4054 } ) ;
4155
4256 // Register to get notifications
@@ -83,6 +97,7 @@ var abp = abp || {};
8397 var connection = new signalR . HubConnectionBuilder ( )
8498 . withUrl ( url , transport )
8599 . build ( ) ;
100+
86101 if ( configureConnection && typeof configureConnection === 'function' ) {
87102 configureConnection ( connection ) ;
88103 }
@@ -110,5 +125,4 @@ var abp = abp || {};
110125 if ( abp . signalr . autoConnect && ! abp . signalr . hubs . common ) {
111126 abp . signalr . connect ( ) ;
112127 }
113-
114128} ) ( ) ;
0 commit comments