Force reconnect timeout on online event
This commit is contained in:
parent
5e3feec7a1
commit
c95d2a83f2
@ -86,6 +86,10 @@ const taskListeners = {
|
||||
|
||||
userAgent: (task: any) => {
|
||||
networkerFactory.userAgent = task.payload;
|
||||
},
|
||||
|
||||
online: () => {
|
||||
networkerFactory.forceReconnectTimeout();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -66,6 +66,12 @@ export class NetworkerFactory {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public forceReconnectTimeout() {
|
||||
for(const networker of this.networkers) {
|
||||
networker.forceReconnectTimeout();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const networkerFactory = new NetworkerFactory();
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user