Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dimits-ts/messagingapp
A Distributed System following the Publisher - Subscriber pattern. Also includes an Android Application that acts as a client, sending and receiving messages, and a local file system for persistence.
https://github.com/dimits-ts/messagingapp
android backend-service distributed-systems filesystem messaging-app publisher-subscriber
Last synced: about 9 hours ago
JSON representation
A Distributed System following the Publisher - Subscriber pattern. Also includes an Android Application that acts as a client, sending and receiving messages, and a local file system for persistence.
- Host: GitHub
- URL: https://github.com/dimits-ts/messagingapp
- Owner: dimits-ts
- Created: 2022-04-09T12:30:01.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-09-18T13:07:15.000Z (about 2 years ago)
- Last Synced: 2024-04-22T02:45:09.662Z (7 months ago)
- Topics: android, backend-service, distributed-systems, filesystem, messaging-app, publisher-subscriber
- Language: Java
- Homepage:
- Size: 601 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Yammi Messaging App
## Description
A Distributed System following the Publisher - Subscriber pattern. The project also includes an Application that acts as a client, sending and receiving messages, and a local file system for persistence.
![Client application](https://cdn.discordapp.com/attachments/354913879471423492/1021044231025983578/unknown.png)
The System is initialized with N servers (possibly in different machines) which can be connected to K clients. The clients can then send text, images and videos to various Topics (conversations). The servers automatically distribute the process load among themselves.
## Project Setup
### Building the project
Execute `build.bat` or compile every `.java` file in the `src` directory
#### Run the main Server:
Execute `run_server.bat` with no arguments or run `java --class-path bin app.Server`.#### Run a secondary Server:
Secondary servers connect to the main server and are dynamically allocated Topics which they are responsible for managing.Run `run_server.bat ` or run `java --class-path bin app.Server `, where:
- `ip` and `broker_port` of the main server. These will be printed to the main server's console when it's initialized.#### Run an Android Client:
Open the project in Android Studio and execute it. There's no limit to how many clients