✏️ Distributed Shared Whiteboard

Published:

dsw_welcome

Project Timeline

August 2019 - October 2019

Github: https://github.com/ZhangzihanGit/Distributed-Shared-Whiteboard-Application

Project Description

A shared whiteboard desktop application that allows multiple users to draw shapes and chat at the same time. Users need to log in/sign up to join a whiteboard session, all passwords are encrypted using the SHA512 algorithm. Multiple whiteboards could be created, and the user is able to choose whatever whiteboard to join.

The project used Java 8 as the backend language, JavaFX as the frontend framework, and used a three-tier Client/Server architecture. It separated the client – whiteboard server – data server. Java RMI was used as the communication method between the whiteboard server and data server, the request sends from the client were remotely called in the whiteboard server as well. To synchronize each client, MQTT was used to provide a subscribe/publish protocol. The whiteboard server was used as an intermediate agent to accept messages from each client and publish the messages to all other subscribers.

Tech Stack

  • Backend: Java
  • Frontend GUI: JavaFX
  • Communication protocol:
  • Java RMI: all communication between whiteboard server and data server, clients send request to whiteboard server
  • MQTT: whiteboard server publish updates to all subscribed clients
  • Access control: manager has all the rights to create/delete/close a whiteboard session, as well as save shaps and import files. The manager also has the right to manage the access of visitors

Usage

Step 1

git clone <https://github.com/ZhangzihanGit/Distributed-Shared-Whiteboard-Application.git

Step 2

cd Distributed-Shared-Whiteboard-Application/runnable-jar

Step 3

Run the data server:

java -jar dataServer.jar -ip <network_ipv4_address> -p <port_number>

Example:

java -jar dataServer.jar -ip localhost -p 1111

Step 4

Run the whiteboard server:

java -jar wbServer.jar -ip <network_ipv4_address>

Example:

java -jar wbServer.jar -ip localhost

Step 5

Run the client application:

java -jar client.jar

Demo

Whiteboard Server GUI

welcome_server
configure-db
configure-wb-server-port
configure-wb-server-mqtt
wb-server-list
wb-server-monitor


Client GUI

login
signup
role
manger-naming-wb
choose-wb-to-join
manger-reponse
homepage