EventSource
EventSource copied to clipboard
Every 45000 milliseconds retry request again and again
I met a problem: "No activity within 45000 milliseconds. Reconnecting" I use EventSourcePolyfill.But the background response time may take 5 minutes more than 45 seconds by default. I tried many methods, but they are all failed. How to set its reconnection time according to custom Settings?
Hi! I found a solution in eventsource.js
> eventsource.js
function start(es, url, options){
...
var heartbeatTimeout = parseDuration(options.heartbeatTimeout, 45000);
...
}
Look! Our default 45000 and custom heartbeat times are here.
So, I tried to modify this line of code , Here is my modified code:
var heartbeatTimeout = parseDuration(options.headers.heartbeatTimeout, 45000);
Then I added heartbeatTimeout in the header to specify 3 minutes:
new EventSourcePolyfill(url,{ headers: { heartbeatTimeout: 180*1000 } })
Because I'm using Spring SseEmitter
,the server also sets a timeout period of 10 minutes:
SseEmitter sseEmitter = new SseEmitter(600000L);
This means I retry to connect to the server every 3 minutes during the 10-minute validity period
So, it worked,Won't retry to connect the server every 45 seconds, using a custom 5-minute time limit for requests instead. Perfect!
@udhayaas97 i switched to use this package instead: https://www.npmjs.com/package/eventsource
@cwirz , Thank you for your reply. There I have raised three issues.
- https://github.com/EventSource/eventsource/issues/234
- https://github.com/EventSource/eventsource/issues/235
- https://github.com/EventSource/eventsource/issues/236
Is there any working example for Angular?
@MrJimmyYi I tried your solution, but no matter what changes I do in eventSource.js and pass heartbeatTimeout in headers, it is not reflecting. What could be wrong?