|
|
@ -6,6 +6,7 @@ export class TransportHTTP implements Types.Transport { |
|
|
private url: string; |
|
|
private url: string; |
|
|
private receiveBatchRequests: boolean; |
|
|
private receiveBatchRequests: boolean; |
|
|
private fetchInterval: number; |
|
|
private fetchInterval: number; |
|
|
|
|
|
private fetching: boolean; |
|
|
|
|
|
|
|
|
public static async create( |
|
|
public static async create( |
|
|
address: string, |
|
|
address: string, |
|
|
@ -23,6 +24,7 @@ export class TransportHTTP implements Types.Transport { |
|
|
this.url = url; |
|
|
this.url = url; |
|
|
this.receiveBatchRequests = false; |
|
|
this.receiveBatchRequests = false; |
|
|
this.fetchInterval = 3000; |
|
|
this.fetchInterval = 3000; |
|
|
|
|
|
this.fetching = false; |
|
|
|
|
|
|
|
|
this._toDevice = new WritableStream<Uint8Array>({ |
|
|
this._toDevice = new WritableStream<Uint8Array>({ |
|
|
write: async (chunk) => { |
|
|
write: async (chunk) => { |
|
|
@ -39,7 +41,17 @@ export class TransportHTTP implements Types.Transport { |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
setInterval(async () => { |
|
|
setInterval(async () => { |
|
|
|
|
|
if (this.fetching) { |
|
|
|
|
|
// We still have the previous request open
|
|
|
|
|
|
return; |
|
|
|
|
|
} |
|
|
|
|
|
this.fetching = true; |
|
|
|
|
|
try { |
|
|
await this.readFromRadio(controller); |
|
|
await this.readFromRadio(controller); |
|
|
|
|
|
} catch (e) { |
|
|
|
|
|
// TODO: Emit disconnection events for certain types of errors
|
|
|
|
|
|
} |
|
|
|
|
|
this.fetching = false; |
|
|
}, this.fetchInterval); |
|
|
}, this.fetchInterval); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|