mirror of
https://github.com/MercuryWorkshop/bare-mux.git
synced 2025-05-16 23:50:01 -04:00
add error handling to remoteclient
This commit is contained in:
parent
7ba90cb0cb
commit
3538b10630
1 changed files with 16 additions and 5 deletions
|
@ -8,7 +8,12 @@ export function registerRemoteListener(channel: ServiceWorker) {
|
||||||
if (data.type === "request") {
|
if (data.type === "request") {
|
||||||
const { remote, method, body, headers } = data;
|
const { remote, method, body, headers } = data;
|
||||||
|
|
||||||
let response: any = await findSwitcher().active?.request(new URL(remote), method, body, headers, undefined)!;
|
let response: any = await findSwitcher().active?.request(new URL(remote), method, body, headers, undefined)!.catch((err) => {
|
||||||
|
let error = { id: data.id, type: "error", error: err}
|
||||||
|
console.log(error)
|
||||||
|
channel.postMessage(error);
|
||||||
|
return;
|
||||||
|
});
|
||||||
let transferred: any = [];
|
let transferred: any = [];
|
||||||
if (response.body instanceof ArrayBuffer || response.body instanceof Blob || response.body instanceof ReadableStream) {
|
if (response.body instanceof ArrayBuffer || response.body instanceof Blob || response.body instanceof ReadableStream) {
|
||||||
transferred.push(response.body);
|
transferred.push(response.body);
|
||||||
|
@ -25,9 +30,15 @@ let remote: RemoteTransport;
|
||||||
if ("ServiceWorkerGlobalScope" in self) {
|
if ("ServiceWorkerGlobalScope" in self) {
|
||||||
addEventListener("message", async ({ data }) => {
|
addEventListener("message", async ({ data }) => {
|
||||||
if (data.type === "response") {
|
if (data.type === "response") {
|
||||||
let resolve = remote.promises.get(data.id);
|
let promise = remote.promises.get(data.id) as any;
|
||||||
if (resolve) {
|
if (promise!.resolve) {
|
||||||
resolve(data);
|
promise!.resolve(data);
|
||||||
|
remote.promises.delete(data.id);
|
||||||
|
}
|
||||||
|
} else if (data.type === "error") {
|
||||||
|
let promise = remote.promises.get(data.id) as any;
|
||||||
|
if (promise!.reject) {
|
||||||
|
promise!.reject(data.error);
|
||||||
remote.promises.delete(data.id);
|
remote.promises.delete(data.id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -75,7 +86,7 @@ export default class RemoteTransport implements BareTransport {
|
||||||
|
|
||||||
|
|
||||||
return await new Promise((resolve, reject) => {
|
return await new Promise((resolve, reject) => {
|
||||||
this.promises.set(id, resolve);
|
this.promises.set(id, { resolve, reject } as any);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue