websocket icon indicating copy to clipboard operation
websocket copied to clipboard

Exponential backoff does not work

Open bgourlie opened this issue 8 years ago • 3 comments

Elm Version: 0.18 OS: Mac OS X Browser: Chrome SSCCE:

Because this is a bug internal to the websocket library, it can't be illustrated in an isolated example. Here are the simplest steps to reproduce:

  • Make a local copy of the echo example
  • Manually edit Websocket.elm in the elm-stuff/packages/websocket/1.0.2 directory. Add log statements to this line and this line so that you can see when they are fired.
  • Change the echoServer uri to something bogus to trigger reconnect behavior and run the application
  • Check the console and notice that the debug statement on this line is never executed, which is responsible for incrementing the connect attempt count that the backoff strategy is dependent on.

Detailed description:

The BadOpen message is never dispatched, presumably because the Die message is dispatched with every failed connect attempt. This appears to be happening because the native websocket onClose handler is fired every failed connect attempt, and then onSelfMsg handles the Die message, resetting the connection state.

It appears that the browser itself does some sort of connection throttling, which may be why this issue has gone unnoticed.

bgourlie avatar Feb 12 '17 19:02 bgourlie

Thanks for the issue! Make sure it satisfies this checklist. My human colleagues will appreciate it!

Here is what to expect next, and if anyone wants to comment, keep these things in mind.

process-bot avatar Feb 12 '17 19:02 process-bot

I have seen exponential backoff in chrome (just a few minutes ago), but seem to get a constant rate of about 5 retries per second in safari doing the same thing. Now I'm getting one request every 3 seconds in chrome.

drathier avatar Dec 09 '17 12:12 drathier

I suspect that the behavior you’re witnessing is throttling enforced by the browser. It’s been a while since I debugged this issue, but that’s what I recall. On Sat, Dec 9, 2017 at 6:54 AM Filip Haglund [email protected] wrote:

I have seen exponential backoff in chrome (just a few minutes ago), but seem to get a constant rate of about 5 retries per second in safari doing the same thing. Now I'm getting one request every 3 seconds in chrome.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/elm-lang/websocket/issues/17#issuecomment-350461081, or mute the thread https://github.com/notifications/unsubscribe-auth/AA80zLNe8IeavykXOd4aRtOrxEJl_sAnks5s-oMKgaJpZM4L-l4V .

bgourlie avatar Dec 09 '17 21:12 bgourlie