All Projects → lganzzzo → canchat

lganzzzo / canchat

Licence: Apache-2.0 License
Feature-complete rooms-based chat for tens of thousands users. Client plus Server. Built with Oat++ Web Framework.

Programming Languages

C++
36643 projects - #6 most used programming language
javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CMake
9771 projects

Projects that are alternatives of or similar to canchat

Cms
GleezCMS - A Light, Simple, Flexible Content Management System
Stars: ✭ 200 (+426.32%)
Mutual labels:  high-performance, secure
space
A SCI-FI community game server simulating space(ships). Built from the ground up to support moddable online action multiplayer and roleplay!
Stars: ✭ 25 (-34.21%)
Mutual labels:  high-performance
epump
ePump是一个基于I/O事件通知、非阻塞通信、多路复用、多线程等机制开发的事件驱动模型的 C 语言应用开发框架,利用该框架可以很容易地开发出高性能、大并发连接的服务器程序。
Stars: ✭ 26 (-31.58%)
Mutual labels:  high-performance
boundstone
High Performance / Fast Compilation / Lightweight MCBE Server
Stars: ✭ 42 (+10.53%)
Mutual labels:  high-performance
webgui
Web Technologies based Crossplatform GUI Framework with Dark theme
Stars: ✭ 81 (+113.16%)
Mutual labels:  high-performance
macos-receiver
A MacOS TabBar (StatusBar) application that securely receives one-time passwords (OTPs) that you tapped in Raivo for iOS.
Stars: ✭ 44 (+15.79%)
Mutual labels:  secure
COBREXA.jl
Constraint-Based Reconstruction and EXascale Analysis
Stars: ✭ 21 (-44.74%)
Mutual labels:  high-performance
sunzip
Provide secure unzip against zip bomb 💣.
Stars: ✭ 32 (-15.79%)
Mutual labels:  secure
radondb-mysql-kubernetes
Open Source,High Availability Cluster,based on MySQL
Stars: ✭ 146 (+284.21%)
Mutual labels:  high-performance
pasthis
Simple stupid pastebin
Stars: ✭ 36 (-5.26%)
Mutual labels:  secure
nginx cookie flag module
Module for Nginx which allows to set the flags "HttpOnly", "secure" and "SameSite" for cookies.
Stars: ✭ 101 (+165.79%)
Mutual labels:  secure
SecureFiware
Proposing security measures and security analysis in the Fiware IoT environment.
Stars: ✭ 21 (-44.74%)
Mutual labels:  secure
FastRationals.jl
Arithmetic with small and with very large rationals is made fast.
Stars: ✭ 15 (-60.53%)
Mutual labels:  high-performance
ipvpn
[WIP] Easy-to-use decentralized secure overlay private network (for any device)
Stars: ✭ 24 (-36.84%)
Mutual labels:  secure
secrets.clj
A library designed to generate cryptographically strong random numbers.
Stars: ✭ 64 (+68.42%)
Mutual labels:  secure
Apulis-AI-Platform
The AI platform is designed to provide an end-to-end AI solution to users from different industries and enable them to start the high-performance AI development work with significantly reduced ramp up time, thereby saving costs and improving efficie.
Stars: ✭ 50 (+31.58%)
Mutual labels:  high-performance
i2pchat
🌀 i2pchat. Anonymous private secure opensource chat using end-to-end encrypted transport.
Stars: ✭ 25 (-34.21%)
Mutual labels:  secure
spring-boot-mongodb-security-angular8
Spring Boot, Security, MongoDB, Angular 8: Build Authentication
Stars: ✭ 17 (-55.26%)
Mutual labels:  secure
Corium
Corium is a modern scripting language which combines simple, safe and efficient programming.
Stars: ✭ 18 (-52.63%)
Mutual labels:  high-performance
bitECS
Functional, minimal, data-oriented, ultra-high performance ECS library written in JavaScript
Stars: ✭ 372 (+878.95%)
Mutual labels:  high-performance

Can-Chat Build Status

Can-Chat

Feature-complete rooms-based chat for tens of thousands users. Client plus Server. Built with Oat++ Web Framework.
Single-Node In-Memory WebSocket TLS.

Quick Start

  • Run your own chat in Docker:
    docker run -p 8443:8443 -e EXTERNAL_ADDRESS=localhost -e EXTERNAL_PORT=8443 -it lganzzzo/canchat
  • Build from source

Chat

Rooms

All communication happens in chat-rooms.
Each room has a unique URL.
Anyone who has room-URL can join the room. Generating random long enough room-URL gives privacy to participants. Be sure to share room-URL with wanted participants only.

Rooms are automatically created when the first participant joins the room, and are automatically deleted when the last participant leaves the room.

Chat-history is available for newly joined participants. History is rounded when the number of messages in the room exceeds the maxRoomHistoryMessages config parameter. History is deleted and no-longer-available once the room is deleted.

File Sharing

Users can share multiple files at once.

Files are streamed directly from the host-peer machine. Nothing is uploaded to the server nor stored in any 3d-party place.

Once host-peer cancels file-sharing, files are no longer available.
If host-peer exits the room, all of his file-sharing is canceled.

Build And Run

Build From Source

Pre-Requirements

  • Install LibreSSL version 3.0.0 or later.
  • Install oatpp - Oat++ Web Framework (main module)
  • Install oatpp-websocket - Oat++ WebSocket extension module.
  • Install oatpp-libressl - Libressl adaptor for Oat++.

To install oatpp modules you can use utility/install-oatpp-modules.sh script

Build Chat Server

$ cd <this-repo>/server/
$ mkdir build/ && cd build/
$ cmake ..
$ make

Now run chat server

$ canchat-exe --host localhost --port 8443

Docker

$ docker build -t canchat .
$ docker run -p 8443:8443 -e EXTERNAL_ADDRESS=localhost -e EXTERNAL_PORT=8443 -it canchat

Then goto https://localhost:8443/ in browser. (accept self-signed certificate)

Image parameters:

  • -e EXTERNAL_ADDRESS - Address to which the client is supposed to connect to.
  • -e EXTERNAL_PORT - Port at EXTERNAL_ADDRESS to which the client is supposed to connect to. Chat server will also be running on this port.
  • -e TLS_FILE_PRIVATE_KEY - Path to TLS private-key file.
  • -e TLS_FILE_CERT_CHAIN - Path to TLS certificate chain file.

Repository Content

- front/                            # - Front-end sources are here
- server/                           # - Server sources are here
- cert/                             # - test TLS certificate is here
- utility/
    |
    |- install-oatpp-modules.sh     # - useful script to install required oatpp modules

License

This project is released under Apache License 2.0.


Enjoy!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].