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