ManiacalLabs / SimPixel

WebGL Pixel Art Visualizer
http://simpixel.io
GNU General Public License v3.0
9 stars 7 forks source link

Reconnect faster on interruptions #30

Open rec opened 6 years ago

rec commented 6 years ago

Right now, when you restart the program it's extremely sluggish to reconnect, even if there's almost no pause between stopping one instance of bp and starting the next.

From the code, it looks as if the minimum possible delay is three seconds. This change reduces that to 300ms.

I don't really see any great downside to these tighter bounds. If your server can't respond to a simple "hello" in 200ms, even with unlimited retries, it's never going to be able to sustain any actual frame rate. And the cost of attempting to reconnect and fail is extremely small.

How can I run this locally to test it?

adammhaile commented 6 years ago

@rec - Read the README! https://github.com/ManiacalLabs/SimPixel/blob/master/README.md

mwcz commented 6 years ago

Sounds good to me. 2 seconds is reasonable for a remote server, but not for SimPixel which is always local.

adammhaile commented 6 years ago

The WebSocket connection is always local. SimPixel.io just loads the "software" from a remote system, then connects local.

On Mon, Aug 6, 2018 at 10:35 AM Michael Clayton notifications@github.com wrote:

Sounds good to me. 2 seconds is reasonable for a remote server, but not for SimPixel which is always local.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ManiacalLabs/SimPixel/pull/30#issuecomment-410729755, or mute the thread https://github.com/notifications/unsubscribe-auth/AA6a6oZAiEHBZRIgZ5OdfWoCr4Es5DPcks5uOFQ3gaJpZM4VwUT2 .

rec commented 6 years ago

Well, that "worked" but I still can't really get it to reconnect at all well, either with my settings or the default settings.

This is unfortunately an issue for the documentation. I don't want to tell people to have to restart that page each time...

(https://github.com/rec/BiblioPixel/commits/docs is current progress. Ignore the build failures, they're some bullshit Travis thing I can't figure out.)


Here are some different ways to reproduce this:

  1. bp demo
  2. A simpixel.io page pops up with an animation, as expected.
  3. Refresh that page.
  4. It never reconnects.

Another:

  1. cd SimPixel/src/ && python3 -m http.server 3000
  2. In a separate window: bp demo --simpixel=http://localhost:3000
  3. A local SimPixel comes up with animation.
  4. Refresh that page.
  5. It never reconnects.

Another

  1. cd SimPixel/src/ && python3 -m http.server 3000
  2. Open http://localhost:3000 - you get a blank SimPixel page ("Could not connect ws://localhost:1337")
  3. In a separate window: bp -v projects/0*
  4. It never connects for the first time.
  5. Refreshing also doesn't connect.

But this works:

  1. cd SimPixel/src/ && python3 -m http.server 3000
  2. In a separate window: bp -v projects/0*
  3. Open http://localhost:3000 - you get a blank SimPixel page ("Could not connect ws://localhost:1337")
  4. It always connects first time!
  5. But refreshing doesn't connect.