A Java application to share a set of slides and display them in a synchronous way under control of a single node (the leader).
- Lorenzo Poletti: [email protected]
- Mariusz Wiśniewski: [email protected]
-
In order to share a presentation the user needs to create a new session.
-
Other nodes join one of the available sessions.
-
There can be more sessions led by different users.
-
When the session creator decides on the presentation to share, the presentation may start.
-
Users (nodes) may join while the presentation is ongoing. In such case they choose the node from which to download the presentation in a way to share the load.
-
The leader (initially the session creator/owner) decides on the slide to be displayed.
-
During a session the leader may pass its role to another user, which subsequently becomes the new leader.
The solution should focus on minimizing network traffic while sending the presentation from the session creator to the other nodes.
-
LAN scenario (i.e., link-layer broadcast is available).
-
The nodes (including the leader) may crash. In such case the leader becomes the session creator, or the leader is elected if the session creator also crashed.
Privilege a plug&play solution that leverages the LAN scenario to avoid the need of entering network addresses and similar information.
- Install OpenJDK 18 from the official JDK website.
- Install Apache Maven 4.0.x following the official tutorial.
mvn clean javafx:run
docker network create -d bridge --subnet 192.168.1.0/24 --gateway 192.168.1.254 <network_name>
docker build -t <image_name> .
docker run --name <container_name> --expose 1000-15000 -d --network <network_name> --ip 192.168.1.10 <image_name>
It is possible to run multiple instances of the app by executing the above command, but it is important to change the IP address.