@@ -4,7 +4,7 @@ const assert = require('node:assert')
44const events = require ( 'node:events' )
55const http = require ( 'node:http' )
66const { test, describe } = require ( 'node:test' )
7- const { EventSource } = require ( '../../lib/web/eventsource/eventsource' )
7+ const { EventSource, defaultReconnectionTime } = require ( '../../lib/web/eventsource/eventsource' )
88const { randomInt } = require ( 'node:crypto' )
99
1010describe ( 'EventSource - sending correct request headers' , ( ) => {
@@ -184,6 +184,7 @@ describe('EventSource - received response must have content-type to be text/even
184184 } )
185185
186186 test ( 'should try to connect again if server is unreachable' , async ( ) => {
187+ const reconnectionTime = defaultReconnectionTime
187188 const domain = 'bad.n' + randomInt ( 1e10 ) . toString ( 36 ) + '.proxy'
188189
189190 const eventSourceInstance = new EventSource ( `http://${ domain } ` )
@@ -192,11 +193,39 @@ describe('EventSource - received response must have content-type to be text/even
192193 eventSourceInstance . onerror = ( error ) => {
193194 onerrorCalls . push ( error )
194195 }
196+ await events . once ( eventSourceInstance , 'error' )
195197
196- await new Promise ( resolve => setTimeout ( resolve , 8000 ) )
198+ const start = Date . now ( )
199+ await events . once ( eventSourceInstance , 'error' )
200+ await events . once ( eventSourceInstance , 'error' )
201+ await events . once ( eventSourceInstance , 'error' )
202+ const end = Date . now ( )
197203
198204 eventSourceInstance . close ( )
199205
200- assert . strictEqual ( onerrorCalls . length , 3 )
206+ assert . strictEqual ( end - start < ( 3.5 * reconnectionTime ) , true )
207+ } )
208+
209+ test ( 'should try to connect again if server is unreachable' , async ( ) => {
210+ const reconnectionTime = 500
211+
212+ const domain = 'bad.n' + randomInt ( 1e10 ) . toString ( 36 ) + '.proxy'
213+
214+ const eventSourceInstance = new EventSource ( `http://${ domain } ` , {
215+ node : {
216+ reconnectionTime
217+ }
218+ } )
219+ await events . once ( eventSourceInstance , 'error' )
220+
221+ const start = Date . now ( )
222+ await events . once ( eventSourceInstance , 'error' )
223+ await events . once ( eventSourceInstance , 'error' )
224+ await events . once ( eventSourceInstance , 'error' )
225+ const end = Date . now ( )
226+
227+ eventSourceInstance . close ( )
228+
229+ assert . strictEqual ( end - start < ( 3.5 * reconnectionTime ) , true )
201230 } )
202231} )
0 commit comments