Improvements to enablePing() & tests (#506)

https://github.com/nbd-wtf/nostr-tools/pull/506
This commit is contained in:
Chris McCormick
2025-09-29 21:41:40 +08:00
committed by GitHub
parent c9ff51e278
commit 226d7d07e2
4 changed files with 93 additions and 17 deletions

View File

@@ -117,3 +117,34 @@ test('publish timeout', async () => {
),
).rejects.toThrow('publish timed out')
})
test('ping-pong timeout', async () => {
const mockRelay = new MockRelay()
const relay = new Relay(mockRelay.url, { enablePing: true })
relay.pingTimeout = 50
relay.pingFrequency = 50
let closed = false
const closedPromise = new Promise<void>(resolve => {
relay.onclose = () => {
closed = true
resolve()
}
})
await relay.connect()
expect(relay.connected).toBeTrue()
// wait for the first ping to succeed
await new Promise(resolve => setTimeout(resolve, 75))
expect(closed).toBeFalse()
// now make it unresponsive
mockRelay.unresponsive = true
// wait for the second ping to fail
await closedPromise
expect(relay.connected).toBeFalse()
expect(closed).toBeTrue()
})