Исправление обработки ошибок вебсокета при запросах
This commit is contained in:
@@ -186,22 +186,34 @@ class Api {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async request(params, timeoutSecs = 10) {
|
async request(params, timeoutSecs = 10) {
|
||||||
|
let errCount = 0;
|
||||||
while (1) {// eslint-disable-line
|
while (1) {// eslint-disable-line
|
||||||
if (this.accessToken)
|
try {
|
||||||
params.accessToken = this.accessToken;
|
if (this.accessToken)
|
||||||
|
params.accessToken = this.accessToken;
|
||||||
|
|
||||||
const response = await wsc.message(await wsc.send(params), timeoutSecs);
|
const response = await wsc.message(await wsc.send(params), timeoutSecs);
|
||||||
|
|
||||||
if (response && response.error == 'need_access_token') {
|
if (response && response.error == 'need_access_token') {
|
||||||
await this.showPasswordDialog();
|
await this.showPasswordDialog();
|
||||||
} else if (response && response.error == 'server_busy') {
|
} else if (response && response.error == 'server_busy') {
|
||||||
await this.showBusyDialog();
|
await this.showBusyDialog();
|
||||||
} else {
|
} else {
|
||||||
if (response.error) {
|
if (response.error) {
|
||||||
throw new Error(response.error);
|
throw new Error(response.error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
return response;
|
errCount = 0;
|
||||||
|
} catch(e) {
|
||||||
|
errCount++;
|
||||||
|
if (e.message !== 'WebSocket не отвечает' || errCount > 10) {
|
||||||
|
errCount = 0;
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
await utils.sleep(100);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user