Switch to streaming/event source mechanism for live reload #458
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves #416 (maybe?)
Well this certainly ended up being an inordinate amount of work! Getting the streaming mechanism enabled wasn't too bad, but then I ran into a bad situation where Ctrl-C would hang until Puma determined the stream had completed (and the longer it would run, the longer it would hang!). It took quite a while to workaround that, and then I discovered long streams would also gunk up Puma's threads if enough pages were opened at once and you were clicking around, because of a delay between a page change and the socket (browser? Puma?) cleaning up and stopping the stream.
I think it's pretty balanced now, between the length of the stream before a browser-initiated reconnection and the interval checking the modification, as well as further modification checks in-browser between a previous stream and a reconnected stream. Good grief.
I tested in Safari and Firefox…haven't tried any other browsers yet.