Refactor reconnection
This commit is contained in:
parent
55cffab594
commit
f30d415f76
|
@ -52,6 +52,7 @@
|
||||||
- `_converse.updateSettings` has been removed in favor of [\_converse.api.settings.update](https://conversejs.org/docs/html/api/-_converse.api.settings.html#.update)
|
- `_converse.updateSettings` has been removed in favor of [\_converse.api.settings.update](https://conversejs.org/docs/html/api/-_converse.api.settings.html#.update)
|
||||||
- `_converse.api.roster.get` now returns a promise.
|
- `_converse.api.roster.get` now returns a promise.
|
||||||
- New API method [\_converse.api.disco.features.get](https://conversejs.org/docs/html/api/-_converse.api.disco.features.html#.get)
|
- New API method [\_converse.api.disco.features.get](https://conversejs.org/docs/html/api/-_converse.api.disco.features.html#.get)
|
||||||
|
- New API method [\_converse.api.connection.reconnect](https://conversejs.org/docs/html/api/-_converse.api.connection.html#.reconnect)
|
||||||
|
|
||||||
## 4.2.0 (2019-04-04)
|
## 4.2.0 (2019-04-04)
|
||||||
|
|
||||||
|
|
|
@ -917,7 +917,7 @@ converse.plugins.add('converse-chatview', {
|
||||||
['Sorry, the connection has been lost, and your message could not be sent'],
|
['Sorry, the connection has been lost, and your message could not be sent'],
|
||||||
'error'
|
'error'
|
||||||
);
|
);
|
||||||
_converse.reconnect();
|
_converse.api.connection.reconnect();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let spoiler_hint, hint_el = {};
|
let spoiler_hint, hint_el = {};
|
||||||
|
|
|
@ -421,6 +421,28 @@ function tearDown () {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function reconnect () {
|
||||||
|
_converse.log('RECONNECTING: the connection has dropped, attempting to reconnect.');
|
||||||
|
_converse.setConnectionStatus(
|
||||||
|
Strophe.Status.RECONNECTING,
|
||||||
|
__('The connection has dropped, attempting to reconnect.')
|
||||||
|
);
|
||||||
|
/**
|
||||||
|
* Triggered when the connection has dropped, but Converse will attempt
|
||||||
|
* to reconnect again.
|
||||||
|
*
|
||||||
|
* @event _converse#will-reconnect
|
||||||
|
*/
|
||||||
|
_converse.api.trigger('will-reconnect');
|
||||||
|
|
||||||
|
_converse.connection.reconnecting = true;
|
||||||
|
tearDown();
|
||||||
|
_converse.api.user.login(null, null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
const debouncedReconnect = _.debounce(reconnect, 2000);
|
||||||
|
|
||||||
|
|
||||||
function clearSession () {
|
function clearSession () {
|
||||||
if (!_.isUndefined(_converse.bosh_session)) {
|
if (!_.isUndefined(_converse.bosh_session)) {
|
||||||
_converse.bosh_session.destroy();
|
_converse.bosh_session.destroy();
|
||||||
|
@ -834,33 +856,6 @@ _converse.initialize = async function (settings, callback) {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called once the XMPP connection has dropped and we want to attempt
|
|
||||||
* reconnection.
|
|
||||||
* @method reconnect
|
|
||||||
* @private
|
|
||||||
* @memberOf _converse
|
|
||||||
*/
|
|
||||||
this.reconnect = _.debounce(() => {
|
|
||||||
_converse.log('RECONNECTING: the connection has dropped, attempting to reconnect.');
|
|
||||||
_converse.setConnectionStatus(
|
|
||||||
Strophe.Status.RECONNECTING,
|
|
||||||
__('The connection has dropped, attempting to reconnect.')
|
|
||||||
);
|
|
||||||
/**
|
|
||||||
* Triggered when the connection has dropped, but Converse will attempt
|
|
||||||
* to reconnect again.
|
|
||||||
*
|
|
||||||
* @event _converse#will-reconnect
|
|
||||||
*/
|
|
||||||
_converse.api.trigger('will-reconnect');
|
|
||||||
|
|
||||||
_converse.connection.reconnecting = true;
|
|
||||||
tearDown();
|
|
||||||
_converse.api.user.login(null, null, true);
|
|
||||||
}, 2000);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Properly tear down the session so that it's possible to manually connect again.
|
* Properly tear down the session so that it's possible to manually connect again.
|
||||||
* @method finishDisconnection
|
* @method finishDisconnection
|
||||||
|
@ -898,7 +893,7 @@ _converse.initialize = async function (settings, callback) {
|
||||||
/* In this case, we reconnect, because we might be receiving
|
/* In this case, we reconnect, because we might be receiving
|
||||||
* expirable tokens from the credentials_url.
|
* expirable tokens from the credentials_url.
|
||||||
*/
|
*/
|
||||||
return _converse.reconnect();
|
return _converse.api.connection.reconnect();
|
||||||
} else {
|
} else {
|
||||||
return _converse.finishDisconnection();
|
return _converse.finishDisconnection();
|
||||||
}
|
}
|
||||||
|
@ -909,7 +904,7 @@ _converse.initialize = async function (settings, callback) {
|
||||||
!_converse.auto_reconnect) {
|
!_converse.auto_reconnect) {
|
||||||
return _converse.finishDisconnection();
|
return _converse.finishDisconnection();
|
||||||
}
|
}
|
||||||
_converse.reconnect();
|
_converse.api.connection.reconnect();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -1426,22 +1421,23 @@ _converse.api = {
|
||||||
* @namespace _converse.api.connection
|
* @namespace _converse.api.connection
|
||||||
* @memberOf _converse.api
|
* @memberOf _converse.api
|
||||||
*/
|
*/
|
||||||
'connection': {
|
connection: {
|
||||||
/**
|
/**
|
||||||
* @method _converse.api.connection.connected
|
* @method _converse.api.connection.connected
|
||||||
* @memberOf _converse.api.connection
|
* @memberOf _converse.api.connection
|
||||||
* @returns {boolean} Whether there is an established connection or not.
|
* @returns {boolean} Whether there is an established connection or not.
|
||||||
*/
|
*/
|
||||||
'connected' () {
|
connected () {
|
||||||
return _converse.connection && _converse.connection.connected || false;
|
return _converse.connection && _converse.connection.connected || false;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Terminates the connection.
|
* Terminates the connection.
|
||||||
*
|
*
|
||||||
* @method _converse.api.connection.disconnect
|
* @method _converse.api.connection.disconnect
|
||||||
* @memberOf _converse.api.connection
|
* @memberOf _converse.api.connection
|
||||||
*/
|
*/
|
||||||
'disconnect' () {
|
disconnect () {
|
||||||
if (_converse.connection) {
|
if (_converse.connection) {
|
||||||
_converse.connection.disconnect();
|
_converse.connection.disconnect();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1449,6 +1445,22 @@ _converse.api = {
|
||||||
clearSession();
|
clearSession();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can be called once the XMPP connection has dropped and we want
|
||||||
|
* to attempt reconnection.
|
||||||
|
* Only needs to be called once, if reconnect fails Converse will
|
||||||
|
* attempt to reconnect every two seconds.
|
||||||
|
* @method reconnect
|
||||||
|
* @memberOf _converse.api.connection
|
||||||
|
*/
|
||||||
|
reconnect () {
|
||||||
|
if (_converse.connfeedback.get('connection_status') === Strophe.Status.RECONNECTING) {
|
||||||
|
debouncedReconnect();
|
||||||
|
} else {
|
||||||
|
reconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1495,6 +1507,7 @@ _converse.api = {
|
||||||
'jid' () {
|
'jid' () {
|
||||||
return _converse.connection.jid;
|
return _converse.connection.jid;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Logs the user in.
|
* Logs the user in.
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in New Issue
Block a user