- Notifications
You must be signed in to change notification settings - Fork139
free4.chat is a real-time audio chat service. It is designed by the local first and privacy first principle, and is very easy to use.
License
i365dev/free4chat
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
free4.chat is areal-time audio chat service. It is designed by thelocal first andprivacy first
principle, and is very easy to use.
⚠️ This project is just using for technical test purpose, use at all your risk!
⚠️ There is freedom of speech, but I cannot guarantee freedom after speech. (- Idi Amin)
- Real-time Communicating
- Voice chat in room
- Text chat in room, can sent text or emoji
- Persist text messages to browser localStorage
- Can send arbitrary data by WebRTC datachannel 🚩
- Room permission setting, like public/private type setting
- private room can't been seen on room discovery, and it needs password to enter. The password isEnd-to-End Encryption, server only need check the answer which given by the client like the
PoW
in blockchain. - Public rooms discovery, like hot room list or filter rooms by type/tag
- private room can't been seen on room discovery, and it needs password to enter. The password isEnd-to-End Encryption, server only need check the answer which given by the client like the
- Real-time Collaborating
- User real-time collaboration, like whiteboard, you draw I guess, etc.
- UseCRDT to impelement real-time collaboration
- Whiteboard
- User real-time collaboration, like whiteboard, you draw I guess, etc.
- Real-time Contesting
- AI Robot user, like game robot who can play or facilitate game
- robot useWeb Speech API to play with user in room
- AzureText to speech service.
- robot can play some voice games like language learning, technical interview, etc.
- AI + Voice
- Deep learning models are changing the world
- @midjourney can generate fatastic image from text
- @GitHubCopilot can generate context-awared code from short code segment
- @OpenAI GPT-3 model can generate text paragraph from short sentence segment
- Voice conversation from text?
- Deep learning models are changing the world
- robot useWeb Speech API to play with user in room
- AI Robot user, like game robot who can play or facilitate game
Common
- UseWebSocket to replace http protocol of JSON-RPC
- Compatibility
- Make Safari(WebKit) compatibility better
Tech Stack
- Use Elixir/Phoenix to rewrite the backend code
- Use Recat/Next.js to rewrite the frontend code
Infra
Use docker to deploy to PaaS platform likeRailway orFly- Use GitHub Actions + AWS Lightsail to deploy backend server
- Backend service cluster, auto scaling, load balancing, etc.
- Backend service use Elixir libcluster to build cluster
- Frontend app use the client load balance strategy
- TURN cluster scale
- Fix by start turn before the libcluster, still wait the upstream library to fix it normally
- Room process rebalance, that means if the node where room in is offline, then the room process can rebalance to another node, the rebalance can useConsistent hashing to implement
For now, we just ignore this issue, because it can be resolved by reconnect another node and create the room again
Some Elixir simple approaches
A complex approach is useRiak Core which implement the
Consistent hashing
and can rebalance the process byVNode- NkDIST, a Erlang distributed registration and load balancing lib which is base on
Riak Core
- NkDIST, a Erlang distributed registration and load balancing lib which is base on
Tinode chat solve this issue by implementing theRaft Consensus Algorithm
- Security enhancement, like coturn TLS setup, end-to-end encryption, etc.
- TURN enable TLS
- Privacy enhancement.
- IPV6 support.
If you are interested inwebRTC
,peer-to-peer(P2P)
,real-time collaboration(CRDT)
,distributed system
orrobot design
, you can join this project and contact with me bytwitter.
- free4.chat Elixir version is build on the top ofMembrane Framework, thanks for their heart of open source.
- free4.chat Golang version is build on the top ofKraken,Mornin,coturn andPion, thanks for their heart of open source.
- These websites also inspired me:
- Random voice and text chat rooms that you’ll love. | Speakrandom
- Practice Speaking English Online Free - Language Practice Community
- Agora Real-Time Voice and Video Engagement
- An open network for secure, decentralized communication - Matrix
- Introduction to Realtime Web Applications
- Gather | Building better teams, bit by bit
About
free4.chat is a real-time audio chat service. It is designed by the local first and privacy first principle, and is very easy to use.