@@ -59,16 +59,24 @@ test('same with double subs', async () => {
5959 let priv = generateSecretKey ( )
6060 let pub = getPublicKey ( priv )
6161
62- pool . subscribeMany ( relayURLs , { authors : [ pub ] } , {
63- onevent ( event ) {
64- received . push ( event )
62+ pool . subscribeMany (
63+ relayURLs ,
64+ { authors : [ pub ] } ,
65+ {
66+ onevent ( event ) {
67+ received . push ( event )
68+ } ,
6569 } ,
66- } )
67- pool . subscribeMany ( relayURLs , { authors : [ pub ] } , {
68- onevent ( event ) {
69- received . push ( event )
70+ )
71+ pool . subscribeMany (
72+ relayURLs ,
73+ { authors : [ pub ] } ,
74+ {
75+ onevent ( event ) {
76+ received . push ( event )
77+ } ,
7078 } ,
71- } )
79+ )
7280
7381 let received : Event [ ] = [ ]
7482
@@ -172,12 +180,16 @@ test('query a bunch of events and cancel on eose', async () => {
172180 let events = new Set < string > ( )
173181
174182 await new Promise < void > ( resolve => {
175- pool . subscribeManyEose ( relayURLs , { kinds : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] , limit : 40 } , {
176- onevent ( event ) {
177- events . add ( event . id )
183+ pool . subscribeManyEose (
184+ relayURLs ,
185+ { kinds : [ 0 , 1 , 2 , 3 , 4 , 5 , 6 ] , limit : 40 } ,
186+ {
187+ onevent ( event ) {
188+ events . add ( event . id )
189+ } ,
190+ onclose : resolve as any ,
178191 } ,
179- onclose : resolve as any ,
180- } )
192+ )
181193 } )
182194
183195 expect ( events . size ) . toBeGreaterThan ( 50 )
@@ -210,6 +222,37 @@ test('get()', async () => {
210222 expect ( event ) . toHaveProperty ( 'id' , ids [ 0 ] )
211223} )
212224
225+ test ( 'ping-pong timeout in pool' , async ( ) => {
226+ const mockRelay = mockRelays [ 0 ]
227+ pool = new SimplePool ( { enablePing : true } )
228+ const relay = await pool . ensureRelay ( mockRelay . url )
229+ relay . pingTimeout = 50
230+ relay . pingFrequency = 50
231+
232+ let closed = false
233+ const closedPromise = new Promise < void > ( resolve => {
234+ relay . onclose = ( ) => {
235+ closed = true
236+ resolve ( )
237+ }
238+ } )
239+
240+ expect ( relay . connected ) . toBeTrue ( )
241+
242+ // wait for the first ping to succeed
243+ await new Promise ( resolve => setTimeout ( resolve , 75 ) )
244+ expect ( closed ) . toBeFalse ( )
245+
246+ // now make it unresponsive
247+ mockRelay . unresponsive = true
248+
249+ // wait for the second ping to fail
250+ await closedPromise
251+
252+ expect ( relay . connected ) . toBeFalse ( )
253+ expect ( closed ) . toBeTrue ( )
254+ } )
255+
213256test ( 'track relays when publishing' , async ( ) => {
214257 let event1 = finalizeEvent (
215258 {
0 commit comments