fix(extension): resolve 10-item limit truncation & WS zombie disconnection (v0.5.14)
This commit is contained in:
50
test_ws_logic.js
Normal file
50
test_ws_logic.js
Normal file
@@ -0,0 +1,50 @@
|
||||
// test_ws_logic.js
|
||||
class FakeWS {
|
||||
constructor() {
|
||||
this.msgLog = [];
|
||||
this.terminated = false;
|
||||
}
|
||||
send(msg) {
|
||||
this.msgLog.push(msg);
|
||||
}
|
||||
terminate() {
|
||||
this.terminated = true;
|
||||
}
|
||||
close() {
|
||||
this.terminated = true;
|
||||
}
|
||||
}
|
||||
|
||||
// SIMULATE _startHeartbeat() logic from ws-client.ts v0.5.12
|
||||
function testLogic(isNodeWs, serverSendsPong) {
|
||||
let ws = new FakeWS();
|
||||
let connected = true;
|
||||
let lastPongTime = Date.now();
|
||||
let forceHeartbeatTimeoutIfNoPong = serverSendsPong;
|
||||
let checkCounter = 0;
|
||||
|
||||
// Fast forward 61 seconds in time
|
||||
let timeElapsed = 61000;
|
||||
let currentNow = Date.now() + timeElapsed;
|
||||
|
||||
// Simulate heartbeat timeout logic
|
||||
let conditionMet = false;
|
||||
if ((isNodeWs || forceHeartbeatTimeoutIfNoPong) && currentNow - lastPongTime > 60000) {
|
||||
conditionMet = true;
|
||||
ws.terminate();
|
||||
}
|
||||
|
||||
return {
|
||||
conditionMet: conditionMet,
|
||||
terminated: ws.terminated
|
||||
};
|
||||
}
|
||||
|
||||
console.log("Scenario 1: Node WS (native ping/pong) MUST enforce 60s timeout:");
|
||||
console.log(testLogic(true, false)); // expect true, true
|
||||
|
||||
console.log("\nScenario 2: Browser WS (fallback) + NO JSON PONG FROM SERVER MUST NOT enforce 60s timeout:");
|
||||
console.log(testLogic(false, false)); // expect false, false (PREVENTS FALSE POSITIVE)
|
||||
|
||||
console.log("\nScenario 3: Browser WS (fallback) + JSON PONG FROM SERVER MUST enforce 60s timeout:");
|
||||
console.log(testLogic(false, true)); // expect true, true (DETECTS ZOMBIE)
|
||||
Reference in New Issue
Block a user