Adjust how error message is caught and displayed

This commit is contained in:
NI
2019-09-14 21:30:49 +08:00
parent 6b5c444f45
commit d9d0170d1a
8 changed files with 94 additions and 60 deletions

View File

@@ -74,7 +74,7 @@ class Dial {
return reject(e);
};
ws.addEventListener("open", event => {
ws.addEventListener("open", _event => {
myRes(ws);
});
@@ -86,7 +86,7 @@ class Dial {
myRej(event);
});
ws.addEventListener("error", event => {
ws.addEventListener("error", _event => {
ws.close();
});
});
@@ -143,20 +143,7 @@ class Dial {
bufferReader.readAsArrayBuffer(data);
});
}),
sdDataConvert = rawData => {
return rawData;
},
sd = new sender.Sender(
async rawData => {
let data = await sdDataConvert(rawData);
ws.send(data.buffer);
callbacks.outbound(data);
},
15,
4096 - 64 // Server has a 4096 bytes receive buffer, can be no greater
);
});
ws.addEventListener("message", event => {
callbacks.inbound(event.data);
@@ -165,13 +152,45 @@ class Dial {
});
ws.addEventListener("error", event => {
rd.close();
event.toString = () => {
return "WebSocket Error (" + event.code + ")";
};
rd.closeWithReason(event);
});
ws.addEventListener("close", event => {
rd.close();
ws.addEventListener("close", _event => {
rd.closeWithReason("Connection is closed");
});
let sdDataConvert = rawData => {
return rawData;
},
getSdDataConvert = () => {
return sdDataConvert;
},
sd = new sender.Sender(
async rawData => {
try {
let data = await getSdDataConvert()(rawData);
ws.send(data.buffer);
callbacks.outbound(data);
} catch (e) {
ws.close();
rd.closeWithReason(e);
if (process.env.NODE_ENV === "development") {
console.error(e);
}
throw e;
}
},
15,
4096 - 64 // Server has a 4096 bytes receive buffer, can be no greater
);
let senderNonce = crypt.generateNonce();
sd.send(senderNonce);
@@ -213,7 +232,7 @@ class Dial {
r.feed(new reader.Buffer(new Uint8Array(decoded), () => {}), () => {});
} catch (e) {
r.close();
r.closeWithReason(e);
}
});
@@ -319,10 +338,16 @@ export class Socket {
}
});
streamHandler.serve().catch(() => {});
callbacks.connected();
streamHandler.serve().catch(e => {
if (process.env.NODE_ENV !== "development") {
return;
}
console.trace(e);
});
this.streamHandler = streamHandler;
} catch (e) {
callbacks.failed(e);