Connection robustness improvements (#813)
* Clear heartbeat and queue when disconnected * Give clearer error in case configure fails due to a lost connection. Used to throw 'Packet does not exist' * If the queue processing error is due to a lost connection, throw it instead of looping endlessly * In case we send a disconnection event we don't need to also throw * Catch heartbeat errors * Also handle invalid state errors * Handle socket timeouts * Log heartbeat failures * Make linter happy * Transform stream being a singleton prevented reconnection attempts * Adapt tests to not using singleton * Aborting already ends the connection
This commit is contained in:
@@ -4,11 +4,12 @@ import { runTransportContract } from "../../../tests/utils/transportContract.ts"
|
||||
import { TransportWebSerial } from "./transport.ts";
|
||||
|
||||
function stubCoreTransforms() {
|
||||
const toDevice = new TransformStream<Uint8Array, Uint8Array>({
|
||||
transform(chunk, controller) {
|
||||
controller.enqueue(chunk);
|
||||
},
|
||||
});
|
||||
const toDevice = () =>
|
||||
new TransformStream<Uint8Array, Uint8Array>({
|
||||
transform(chunk, controller) {
|
||||
controller.enqueue(chunk);
|
||||
},
|
||||
});
|
||||
|
||||
// maps raw bytes -> DeviceOutput.packet
|
||||
const fromDeviceFactory = () =>
|
||||
@@ -18,9 +19,10 @@ function stubCoreTransforms() {
|
||||
},
|
||||
});
|
||||
|
||||
const transform = Utils.toDeviceStream;
|
||||
const restoreTo = vi
|
||||
.spyOn(Utils, "toDeviceStream", "get")
|
||||
.mockReturnValue(toDevice as unknown as typeof Utils.toDeviceStream);
|
||||
.mockReturnValue(toDevice as unknown as typeof transform);
|
||||
|
||||
const restoreFrom = vi
|
||||
.spyOn(Utils, "fromDeviceStream")
|
||||
|
||||
Reference in New Issue
Block a user