All Projects → robertDurst → ChatDemo

robertDurst / ChatDemo

Licence: other
A demonstration of private communication on a public channel.

Programming Languages

rust
11053 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to ChatDemo

socket.io-react
A High-Order component to connect React and Socket.io easily
Stars: ✭ 67 (+131.03%)
Mutual labels:  socket-io
m-server
egg.js简单应用
Stars: ✭ 35 (+20.69%)
Mutual labels:  socket-io
laravel-echo-redis-socketio
It's a very simple chat demo, use laravel-echo-server and Laravel Echo
Stars: ✭ 30 (+3.45%)
Mutual labels:  socket-io
ikisocket
🧬 WebSocket wrapper with event management for Fiber https://github.com/gofiber/fiber. Based on Fiber WebSocket and inspired by Socket.io
Stars: ✭ 92 (+217.24%)
Mutual labels:  socket-io
vega
HTTP Client w/ Team Sharing Features!
Stars: ✭ 20 (-31.03%)
Mutual labels:  socket-io
Introduction p5js
This is a french introduction to p5*js
Stars: ✭ 29 (+0%)
Mutual labels:  socket-io
socketio-jwt-auth
Socket.io authentication middleware using Json Web Token
Stars: ✭ 87 (+200%)
Mutual labels:  socket-io
redparty
Host Youtube watch party with friends. Sync videos and chat in real-time
Stars: ✭ 70 (+141.38%)
Mutual labels:  socket-io
uptime-kuma
A fancy self-hosted monitoring tool
Stars: ✭ 27,425 (+94468.97%)
Mutual labels:  socket-io
local-party
A website where you can create rooms and chat while watching local video files synchronized with your friends.
Stars: ✭ 196 (+575.86%)
Mutual labels:  socket-io
Project06-A-Slack
팀 협업도구, 우리동네 슬랙 🚀
Stars: ✭ 14 (-51.72%)
Mutual labels:  socket-io
flood-protection
Flood protection for realtime applications
Stars: ✭ 19 (-34.48%)
Mutual labels:  socket-io
tsed
📐 Ts.ED is a Node.js and TypeScript framework on top of Express to write your application with TypeScript (or ES6). It provides a lot of decorators and guideline to make your code more readable and less error-prone.
Stars: ✭ 2,350 (+8003.45%)
Mutual labels:  socket-io
just-drop-it
Simply and instantly beam a file between two browsers
Stars: ✭ 22 (-24.14%)
Mutual labels:  socket-io
aioudp
Asyncio UDP server
Stars: ✭ 21 (-27.59%)
Mutual labels:  socket-io
YoutubeWithFriends
main repo for youtube-with-friends
Stars: ✭ 12 (-58.62%)
Mutual labels:  socket-io
Online-Chess
A chess website where people can play against each other online.
Stars: ✭ 28 (-3.45%)
Mutual labels:  socket-io
node-server-template
This is Node.js server tidy template / boilerplate with Express (with asyncified handlers, custom error handler) framework and MongoDb. The server use ES6 and above. On different branches you can see different techniques' and technologies' usage, such as Kafka, nodemailer, file download... You also can find postman collections.
Stars: ✭ 116 (+300%)
Mutual labels:  socket-io
python react blog back end
Redis Celery Fabric Gunicorn Personal Blog
Stars: ✭ 12 (-58.62%)
Mutual labels:  socket-io
how-to-build-your-own-uber-for-x-app
Code for my blog post on How to Build Your Own Uber-for-X App
Stars: ✭ 138 (+375.86%)
Mutual labels:  socket-io

Chat Demo

A live demonstration of private communication on a public channel.

How it Works

We utilize simple web sockets via socket.io to create a central chat room that broadcasts all messages to all members and RSA for message encryption/decryption.

Before joining the chat room, the user generates a public key [e,n] and private key [d,n]. After generating the keys, the client Registers with the chat server by sending its public key which is broadcasted to all users.

Once the user has joined they can send unencrypted or encrypted messages. To send encrypted messages, they can click on a joined user's public key which will be filled into the encrypt field and write the message they want to encrypt in the send field. After clicking the encrypt button, their message will be encrypted and replace the plaintext in the send field.

Messages are filtered by each client. When a client receives a message with it's public key as the header, it will automatically decrypt the message and alert the user that a message was received.

Prerequisites

  • A recent version of node/npm (probably node 8+ should be fine)
  • Nightly Rust (we use the latest and greatest)

How to Use?

Setup

git clone https://github.com/robertDurst/ChatDemo.git
cd ChatDemo
npm install
npm run build-debug // or npm run build-release

Start Client

npm run client

Start Server

npm run server

Test

cargo test

Cryptography Dependencies

The underlying crypto makes heavy use of the crates in rust-num, specifically num-bigint and num-trait crates.

The randomness for the crypto uses the rust rand crate.

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].