Force reconnect timeout on online event

This commit is contained in:
Eduard Kuzmenko 2021-06-22 02:10:48 +03:00
parent 5e3feec7a1
commit c95d2a83f2
5 changed files with 38 additions and 7 deletions

View File

@ -86,6 +86,10 @@ const taskListeners = {
userAgent: (task: any) => {
networkerFactory.userAgent = task.payload;
},
online: () => {
networkerFactory.forceReconnectTimeout();
}
};

View File

@ -188,6 +188,10 @@ export class ApiManagerProxy extends CryptoWorkerMethods {
this.performTaskWorkerVoid('setLanguage', language);
});
window.addEventListener('online', (event) => {
this.postMessage({type: 'online'});
});
/// #if !MTPROTO_SW
this.registerWorker();
/// #endif

View File

@ -374,6 +374,12 @@ export default class MTPNetworker {
(this.transport as TcpObfuscated).destroy();
}
public forceReconnectTimeout() {
if((this.transport as TcpObfuscated).reconnect) {
(this.transport as TcpObfuscated).reconnect();
}
}
// private sendPingDelayDisconnect = () => {
// if(this.pingPromise || true) return;

View File

@ -66,6 +66,12 @@ export class NetworkerFactory {
}
}
}
public forceReconnectTimeout() {
for(const networker of this.networkers) {
networker.forceReconnectTimeout();
}
}
}
const networkerFactory = new NetworkerFactory();

View File

@ -111,12 +111,7 @@ export default class TcpObfuscated implements MTTransport {
};
private onClose = () => {
this.connected = false;
this.connection.removeEventListener('open', this.onOpen);
this.connection.removeEventListener('close', this.onClose);
this.connection.removeEventListener('message', this.onMessage);
this.connection = undefined;
this.clear();
let needTimeout: number;
if(this.autoReconnect) {
@ -138,6 +133,17 @@ export default class TcpObfuscated implements MTTransport {
}
};
private clear() {
this.connected = false;
if(this.connection) {
this.connection.removeEventListener('open', this.onOpen);
this.connection.removeEventListener('close', this.onClose);
this.connection.removeEventListener('message', this.onMessage);
this.connection = undefined;
}
}
/**
* invoke only when closed
*/
@ -147,7 +153,7 @@ export default class TcpObfuscated implements MTTransport {
this.reconnectTimeout = undefined;
}
if(this.connected) {
if(this.connection) {
return;
}
@ -194,6 +200,11 @@ export default class TcpObfuscated implements MTTransport {
}
private connect() {
if(this.connection) {
this.close();
this.clear();
}
this.connection = new this.Connection(this.dcId, this.url, this.logSuffix);
this.connection.addEventListener('open', this.onOpen);
this.connection.addEventListener('close', this.onClose);