An instant messaging application with a self-hostable server.
This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
kske c2bbb1a224
Send pending messages after successful handshake
Instead of caching pending messages during the handshake and relaying
them afterwards, they are now sent after the handshake has been
completed.

This is possible because the relevant processors (messages and status
changes) are now event handlers which are registered at the event bus,
which means that they can immediately react to pending messages even if
Client#initReceiver has not been fully executed yet.

Because Client#initReceiver exists for that very reason, it is now
longer necessary. ID generator initialization, which was its other part,
is now directly handled in Startup#performHandshake, which is a far more
sensible placement.

Fixes #106
2020-11-30 22:28:34 +01:00
client Send pending messages after successful handshake 2020-11-30 22:28:34 +01:00
common Apply suggestions by @kske 2020-10-30 12:07:56 +01:00
server Send pending messages after successful handshake 2020-11-30 22:28:34 +01:00
.gitignore Add top level .settings folder to .gitignore 2020-09-06 11:15:20 +02:00
.project Refactor Maven Project Structure 2020-07-13 15:16:22 +02:00
LICENSE Refactor Maven Project Structure 2020-07-13 15:16:22 +02:00
pom.xml Bumped version to v0.2-beta 2020-09-27 17:13:38 +02:00
README.md Link to Documentation (Wiki) in README (#110) 2020-11-27 09:36:08 +01:00

Envoy

Envoy is a messenger written in Java. On this page, the project is explained for different user groups.

Regular User

To use Envoy to join an existing server, download the client from the release page.

When starting it for the first time, you can register yourself at a server of your choice. After connecting to the server, you can add other users to your contact list and send them messages.

To chat with multiple users at once, you can create a group. If you want to transfer a file to another user, you can attach it to a message.

On the settings page some convenience features can be configured, as well as the color theme.

Additional info on how to use Envoy can be found here in the client section.

System requirements

To run Envoy, you have to install a Java Runtime Environment (JRE) of at least version 11. You can download an open source implementation from here.

If you are running a Linux distribution, make sure that an emoji font like Noto emoji is installed. Most major Linux distributions like Debian, Arch and Gentoo have a Noto emoji package available inside their package repositories.

Server Administrator

To set up an Envoy server, download the package from the release page.

To configure the behavior of Envoy Server, please have a look at the documentation, specifically the server part.

System requirements

To run Envoy server, you have to install a JRE as mentioned above, as well as a database. In development, PostgreSQL is used, which you can download from here.

Look at the file META-INF/persistence.xml inside envoy-server.jar for the database configuration.

After creating a database and configuring the credentials, the server will initialize the necessary tables automatically.

Programmer

Envoy is organized as a Maven project that is split into three modules.

Client

  • Sending and receiving of messages, groups, sending images and voice messages
  • User interface (UI)
  • Client configuration
  • Advanced logging possibilities
  • Tons of Events to interact with
  • Detailed Javadoc to improve readability of code

Common

  • Basic datatypes
  • Events sent between client and server
  • Configuration API
  • Logging API based on java.util.logging
  • Envoy-specific Exception
  • Useful utility classes

Server

  • Non-blocking connectivity infrastructure based on java.nio
  • Processors to handle incoming events
  • Database connectivity
  • Database entities
  • Utility classes to check client version compatability and password validity