OLD | NEW |
1 if (self.importScripts) | 1 if (self.importScripts) |
2 importScripts("/js-test-resources/js-test.js"); | 2 importScripts("/js-test-resources/js-test.js"); |
3 | 3 |
4 description("Test EventSource reconnect after end of event stream."); | 4 description("Test EventSource reconnect after end of event stream."); |
5 | 5 |
6 self.jsTestIsAsync = true; | 6 self.jsTestIsAsync = true; |
7 | 7 |
8 var retryTimeout; | 8 var retryTimeout; |
9 | 9 |
10 function checkReadyState(es, desiredState) { | 10 function checkReadyState(es, desiredState) { |
11 shouldBe("es.readyState", "es." + desiredState); | 11 shouldBe("es.readyState", "es." + desiredState); |
12 } | 12 } |
13 | 13 |
14 var errCount = 0; | 14 var errCount = 0; |
15 var es = new EventSource("/eventsource/resources/reconnect.php"); | 15 var es = new EventSource("/eventsource/resources/reconnect.php"); |
16 | 16 |
17 checkReadyState(es, "CONNECTING"); | 17 checkReadyState(es, "CONNECTING"); |
18 | 18 |
19 es.onopen = function (evt) { | 19 es.onopen = function (evt) { |
20 checkReadyState(es, "OPEN"); | 20 checkReadyState(es, "OPEN"); |
21 }; | 21 }; |
22 | 22 |
23 var evt; | 23 var evt; |
24 es.onmessage = function (arg) { | 24 es.onmessage = function (arg) { |
25 evt = arg; | 25 evt = arg; |
26 if (errCount) | 26 if (errCount) |
27 shouldBeEqualToString("evt.data", "77"); | 27 shouldBeEqualToString("evt.data", "77\u2603"); |
28 shouldBeEqualToString("evt.lastEventId", "77"); | 28 shouldBeEqualToString("evt.lastEventId", "77\u2603"); |
29 }; | 29 }; |
30 | 30 |
31 es.onerror = function () { | 31 es.onerror = function () { |
32 errCount++; | 32 errCount++; |
33 if (errCount < 2) { | 33 if (errCount < 2) { |
34 checkReadyState(es, "CONNECTING"); | 34 checkReadyState(es, "CONNECTING"); |
35 retryTimeout = setTimeout(end, 1000); | 35 retryTimeout = setTimeout(end, 1000); |
36 return; | 36 return; |
37 } | 37 } |
38 clearTimeout(retryTimeout); | 38 clearTimeout(retryTimeout); |
39 retryTimeout = null; | 39 retryTimeout = null; |
40 end(); | 40 end(); |
41 }; | 41 }; |
42 | 42 |
43 function end() { | 43 function end() { |
44 es.close(); | 44 es.close(); |
45 if (retryTimeout) | 45 if (retryTimeout) |
46 testFailed("did not reconnect in time"); | 46 testFailed("did not reconnect in time"); |
47 else | 47 else |
48 checkReadyState(es, "CLOSED"); | 48 checkReadyState(es, "CLOSED"); |
49 | 49 |
50 finishJSTest(); | 50 finishJSTest(); |
51 } | 51 } |
OLD | NEW |