Skip to content

ndoniyor/ephemeral-chat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

112 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ephemeral Chat

This is a gRPC chat service using the following stack:

  • Python gRPC server
  • React/TS frontend
    • DaisyUI Components

Features

  • Connect and disconnect users
  • Send and receive messages in real-time
  • Supports multiple separate conversations
  • Allows users to talk to each other
  • Conversations can be cached for a limited time or completely ephemeral--deleting after both users disconnect

To-Do

  • Allow for multiple connections and keep them all separate
  • Have subscriptions run until disconnected
  • Remove group chats
  • Remove auto-assign to open rooms
  • Route web requests through Envoy proxy
  • Change server gRPC channel to be secure; only allow Envoy to connect
  • Flesh out front-end gRPC client; add logging + error handling
  • Local storage
  • Handle timeouts
  • Relieve server threads when conversation is gone
  • Debug disconnects

Usage

  1. Clone the repository:

    git clone https://github.com/ndoniyor/ephemeral-chat
  2. Navigate to the project directory:

    cd ephemeral-chat
  3. Install the required dependencies:

    conda env create -f environment.yml
  4. Run the server:

    python src/serve.py

    The server will start listening for connections on localhost:11912.

  5. Run the client(s):

    python src/connect.py

API

The server provides the following gRPC methods:

  • Connect(ChatUser) -> ChatUserConnected: Connect a user to the chat server.
  • Disconnect(ChatUser) -> ChatUserConnected: Disconnect a user from the chat server.
  • SendMessage(Message) -> Empty: Sends a message to the server
  • SubscribeMessages(ChatUser) -> stream Message: Subscribe a user to receive messages.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

License

MIT

About

Non-persistent, encrypted, chat application using gRPC streaming.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors