GithubHelp home page GithubHelp logo

Comments (4)

pl avatar pl commented on August 22, 2024

Hi,

We cache successful transport info - it is flushed after 15 minutes or after an unsuccessful attempt using the cached transport. We also disable WebSockets/Flash if there were 2 established connections that closed uncleanly after less than a few minutes (right now 4 minutes, I think).

In other cases, current strategy is:

  1. start connecting with WebSockets,
  2. wait 2 seconds,
  3. if WebSockets haven't connected yet, start connecting using SockJS in parallel.

There are lots of cases this behaviour makes sense. There are proxies that break connections after a longer period, so you will manage to open a WebSocket connection every time, but you'll have to reconnect every minute, which is much worse than being switched to HTTP.

Anyway, for majority of cases you don't experience this behaviour and everything works fine. We will consider upgrading transports on the fly in the future, but we can't implement this reliably for the time being.

In the meantime, we'll be releasing blog posts about current strategy soon, which will give you more details on the strategy and motivations behind it.

from pusher-js.

johtso avatar johtso commented on August 22, 2024

Hey, thanks for the detailed info.

Just to be completely clear, I'm testing by switching off the WIFI connection on my laptop for a few seconds and then reenabling it. So, complete loss of connectivity, and then everything back to normal.

So the behaviour I described above is expected under those circumstances?

Looking forward to the blog post with details on the strategy!

from pusher-js.

pl avatar pl commented on August 22, 2024

Yes, this is expected behaviour, it's used to detect bad proxies or anti-virus software, which behave in very similar ways. Normally, you don't experience frequent network disconnections and even if you do, you're probably better off with polling.

We should release the first, more general blog post today and two more detailed in 1 week intervals.

from pusher-js.

pl avatar pl commented on August 22, 2024

Blog posts about connection strategy are here:

http://blog.pusher.com/how-we-built-pusher20-part-1/
http://blog.pusher.com/how-we-built-pusher-js-2-0-part-2-implementation/
http://blog.pusher.com/how-we-built-pusher-js-2-0-part-3-metrics/

I'm closing, since there's no action to be done for this issue.

from pusher-js.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.