A problem with nginx servers currently prevents this from working. While the synchonization initially works, after a while, the http request response times are increasing drastically, although there is no higher CPU usage seen on the server.
It works fine on a local development machine with an Apache server! (WAMP environment)
[ ] upgrade to either use socket.ie or Larvalel Echo after migrating to Laravel 5.3
Overview
When several clients are running in the same LAN, they should be able to communicate with each other and synchronise the progress (position) in overhead, lyrics or sheet-music presentation views.
Specifically:
The 'Main Presenter' (MP) defines the pace. Whatever he shows will be replicated by those who currently show lyrics, chords or music scores (sheet music) and have activated the sync setting.
The 'Main Presenter' is the machine which shows the full-screen slide presentation and has been accepted as MP.
Each time the MP advances to the next slide, to the previous slide or jumps to a specific slide or a specific item on the plan, this activity is reported back to the server.
The server then sends this event to all listening clients who are configured accordingly and are currently showing either chords or music scores or are presenting slides who haven't been configured as MP
The server should make sure that there is only one MP by refusing all subsequent requests from other clients to become MP until the first one has indicated to cease being presenter or his lease has expired.
The appointment of MP has an expiration time (default: 1 day) which can be configured in the .env file.
The setting 'Main Presenter' should be stored in the local browser storage; likewise the setting of clients who want to synchronise with the MP
Both settings are configured using check-boxes in the presentation mode of a plan
Work Plan:
[x] Update present.blade.php with checkbox for MP
[x] Update present_navbar.blade.php with checkbox for "Synchronise Presentation" with MP
[x] Update presentation.js to add functions which store the settings in local storage
[x] Update document.ready.js to load and activate setting from local storage
[x] Update a server-side controller (PresentationController) to store and check who is MP
[x] Add a client-side method to check who is the current MP
Add an IP address component into the server-side setting of who is MP - not needed
[x] Sync name/id of MP via Server-Sent Events (client side defined in main.blade.php)
[x] Server-side code to store current show position (plan_id, seq_no, slide number, song part)
[x] Client-side code for MP to sent current show position
[x] Client-side code to receive current position and advance to it
[x] Add option on Customization page to completely disable or enable Presentation Sync
Currently iced due to issue with Nginx
A problem with nginx servers currently prevents this from working. While the synchonization initially works, after a while, the http request response times are increasing drastically, although there is no higher CPU usage seen on the server. It works fine on a local development machine with an Apache server! (WAMP environment)
Overview
When several clients are running in the same LAN, they should be able to communicate with each other and synchronise the progress (position) in overhead, lyrics or sheet-music presentation views.
Specifically:
Work Plan: