Context
The existing RTN15a proxy integration test in connection_resume.md verifies that an unexpected transport disconnect triggers resume. It uses the proxy's close action, which sends a WebSocket close frame before closing the TCP connection.
An analogous test case should be added for the scenario where the TCP connection is closed without a WebSocket close frame (using the proxy's disconnect action). This verifies that the SDK detects the TCP FIN and transitions to disconnected promptly — the same behavior as the close-frame case.
Investigation in ably-js (on branch uts-integration-proxy) confirmed that the Node.js ws library detects a raw TCP FIN immediately and fires its close event, so the SDK transitions to disconnected with the same minimal delay as when a close frame is sent. This is distinct from a silent connection loss (no TCP close at all), which is only detected after the idle timer fires (~25s).
Proposed addition
Add a new test to uts/realtime/integration/proxy/connection_resume.md as a variant of the existing RTN15a test (Test 6). The test is identical except the proxy rule uses "action": { "type": "disconnect" } instead of "action": { "type": "close" }.
Proposed test spec
## Test 6b: RTN15a - Unexpected disconnect triggers resume (TCP close without close frame)
| Spec | Requirement |
|------|-------------|
| RTN15a | If transport is disconnected unexpectedly, attempt resume |
Same as Test 6, but the proxy closes the underlying TCP connection without
sending a WebSocket close frame. The SDK should detect the TCP FIN and
transition to disconnected with minimal delay — identical to the close-frame
case.
### Setup
**Proxy rules:** Close the underlying TCP connection (no WebSocket close
frame) after a 1-second delay.
session = create_proxy_session(
endpoint: "sandbox",
port: port_base + N,
rules: [
{
match: { type: "delay_after_ws_connect", delayMs: 1000 },
action: { type: "disconnect" },
times: 1,
comment: "RTN15a: Close TCP (no close frame) after 1s to trigger unexpected disconnect"
}
]
)
**SDK config:** Same as Test 6.
### Test Steps
Same as Test 6.
### Assertions
Same as Test 6.
Implementation
An ably-js implementation of this test already exists on the uts-integration-proxy branch.
🤖 Generated with Claude Code
Context
The existing RTN15a proxy integration test in
connection_resume.mdverifies that an unexpected transport disconnect triggers resume. It uses the proxy'scloseaction, which sends a WebSocket close frame before closing the TCP connection.An analogous test case should be added for the scenario where the TCP connection is closed without a WebSocket close frame (using the proxy's
disconnectaction). This verifies that the SDK detects the TCP FIN and transitions todisconnectedpromptly — the same behavior as the close-frame case.Investigation in ably-js (on branch
uts-integration-proxy) confirmed that the Node.jswslibrary detects a raw TCP FIN immediately and fires its close event, so the SDK transitions todisconnectedwith the same minimal delay as when a close frame is sent. This is distinct from a silent connection loss (no TCP close at all), which is only detected after the idle timer fires (~25s).Proposed addition
Add a new test to
uts/realtime/integration/proxy/connection_resume.mdas a variant of the existing RTN15a test (Test 6). The test is identical except the proxy rule uses"action": { "type": "disconnect" }instead of"action": { "type": "close" }.Proposed test spec
Implementation
An ably-js implementation of this test already exists on the
uts-integration-proxybranch.🤖 Generated with Claude Code