Set event stream reconnect time from Retry-After header

This commit is contained in:
Samuel Elliott
2023-07-26 10:55:17 +01:00
parent 2cbfdc5e04
commit c5d8d25334
2 changed files with 6 additions and 8 deletions

View File

@@ -566,11 +566,11 @@ export class ZncProxyDiscordPresence extends Loop {
protected proxy_temporary_errors = 0;
async update() {
if (this.is_sse) {
return await this.useEventStream();
}
try {
if (this.is_sse) {
return await this.useEventStream();
}
const result = await getPresenceFromUrl(this.presence_url);
const [presence, user, data] = result;
this.last_data = data;
@@ -598,7 +598,7 @@ export class ZncProxyDiscordPresence extends Loop {
}
} catch (err) {
if (err instanceof ErrorResponse) {
if (err.response.headers.get('Content-Type')?.match(/^text\/event-stream(;|$)/)) {
if (!this.is_sse && err.response.headers.get('Content-Type')?.match(/^text\/event-stream(;|$)/)) {
this.is_sse = true;
debug('Presence URL responded with an event stream');
return LoopResult.OK_SKIP_INTERVAL;

View File

@@ -151,8 +151,6 @@ export default class EventSource {
this._controller = controller;
this._connecting = connecting;
let _response: Response | null = null;
connecting.then(async response => {
const url = new URL(this.url);
url.search = '';
@@ -171,7 +169,7 @@ export default class EventSource {
const retry_after = response.headers.get('Retry-After');
if (retry_after && /^\d+$/.test(retry_after)) {
this._retry_after = parseInt(retry_after);
this._retry_after = parseInt(retry_after) * 1000;
}
if (!response.ok) {