free4.chat ist ein Echtzeit- Audio-Chat-Dienst. Es basiert auf dem Prinzip „Local First“ und privacy first und ist sehr einfach zu verwenden.
️Dieses Projekt wird nur zu technischen Testzwecken verwendet. Die Verwendung erfolgt auf eigenes Risiko!
️Es gibt Redefreiheit, aber ich kann die Freiheit nach der Rede nicht garantieren. (- Idi Amin)
Merkmale
Kommunikation in Echtzeit
Voice-Chat im Zimmer
Text-Chat im Raum, Text oder Emojis können gesendet werden
Behalten Sie Textnachrichten im Browser localStorage bei
Kann beliebige Daten über den WebRTC-Datenkanal senden
Raumberechtigungseinstellung, z. B. öffentliche/private Typeinstellung
Der private Raum ist bei der Raumerkennung nicht sichtbar und erfordert zum Betreten ein Passwort. Das Passwort ist End-to-End-Verschlüsselung. Der Server muss lediglich die vom Client gegebene Antwort überprüfen, z. B. den PoW in der Blockchain.
Entdecken Sie öffentliche Räume, z. B. eine Hot-Room-Liste oder filtern Sie Räume nach Typ/Tag
Zusammenarbeit in Echtzeit
Benutzer-Echtzeit-Zusammenarbeit, wie Whiteboard, Sie zeichnen, schätze ich, usw.
Nutzen Sie CRDT, um die Zusammenarbeit in Echtzeit zu ermöglichen
https://github.com/derekkraan/delta_crdt_ex
https://github.com/electric-sql/vaxine
https://github.com/liveblocks/liveblocks
https://github.com/yjs/yjs
Whiteboard
https://github.com/tldraw/tldraw
Wettbewerbe in Echtzeit
KI-Roboter-Benutzer, wie ein Spielroboter, der das Spiel spielen oder unterstützen kann
Roboter verwenden die Web Speech API, um mit dem Benutzer im Raum zu spielen
Azure Text-to-Speech-Dienst.
Der Roboter kann einige Sprachspiele wie Sprachenlernen, technische Interviews usw. spielen.
Gartic Phone – Das Telefonspiel
ESL-Spiel – Nicht nur Englisch sprechen üben
Gartic.io – Zeichnen, raten, GEWINNEN
Lernen Sie jemanden in 17 Sekunden kennen
KI + Stimme
Deep-Learning-Modelle verändern die Welt
@midjourney kann aus Text ein fantastisches Bild generieren
@GitHubCopilot kann aus kurzen Codesegmenten kontextsensitiven Code generieren
Das @OpenAI GPT-3-Modell kann Textabsätze aus kurzen Satzsegmenten generieren
Sprachkonversation aus Text?
Architektur
Gemeinsam
Verwenden Sie WebSocket, um das HTTP-Protokoll von JSON-RPC zu ersetzen
Kompatibilität
Verbessern Sie die Kompatibilität mit Safari (WebKit).
Tech-Stack
Verwenden Sie Elixir/Phoenix, um den Backend-Code neu zu schreiben
Verwenden Sie Recat/Next.js, um den Frontend-Code neu zu schreiben
Infrarot
Verwenden Sie Docker für die Bereitstellung auf PaaS-Plattformen wie Railway oder Fly
Verwenden Sie GitHub Actions + AWS Lightsail, um den Backend-Server bereitzustellen
Der Backend-Dienst verwendet Elixir libcluster, um Cluster zu erstellen
Frontend-Apps verwenden die Client-Lastausgleichsstrategie
TURN-Clusterwaage
Beheben Sie das Problem, indem Sie es vor dem libcluster starten, und warten Sie trotzdem, bis die Upstream-Bibliothek das Problem normal repariert
Neuausgleich des Raumprozesses, das heißt, wenn der Knoten, in dem sich der Raum befindet, offline ist, kann der Raumprozess auf einen anderen Knoten neu ausgeglichen werden, der Neuausgleich kann mithilfe von konsistentem Hashing implementiert werden
Im Moment ignorieren wir dieses Problem einfach, da es gelöst werden kann, indem man einen anderen Knoten erneut verbindet und den Raum erneut erstellt
Einige einfache Elixir-Ansätze
Schwarm
Horde
Ein komplexer Ansatz ist die Verwendung von Riak Core, der das Consistent hashing implementiert und den Prozess durch VNode neu ausbalancieren kann
NkDIST, eine verteilte Erlang-Registrierungs- und Lastausgleichsbibliothek, die auf Riak Core basiert
Tinode Chat löst dieses Problem durch die Implementierung des Raft-Konsens-Algorithmus
Sicherheitsverbesserung, wie Coturn-TLS-Einrichtung, Ende-zu-Ende-Verschlüsselung usw.
TURN TLS aktivieren
Verbesserung der Privatsphäre.
IPV6-Unterstützung.
Dokumentation
https://dev-notes.free4.chat/
Beitrag
Wenn Sie sich für webRTC , peer-to-peer(P2P) , real-time collaboration(CRDT) , distributed system oder robot design interessieren, können Sie diesem Projekt beitreten und über Twitter mit mir Kontakt aufnehmen.
Danke
Die free4.chat Elixir-Version basiert auf dem Membrane Framework, vielen Dank für ihr Open-Source-Herz.
Die free4.chat Golang-Version basiert auf Kraken, Mornin, Coturn und Pion, vielen Dank für ihr Open-Source-Herz.
Diese Websites haben mich auch inspiriert:
Zufällige Sprach- und Text-Chatrooms, die Sie lieben werden. | Sprechen Sie zufällig
Üben Sie das Sprechen von Englisch kostenlos online – Community zum Üben von Sprachen
Agora Echtzeit-Sprach- und Video-Engagement
Ein offenes Netzwerk für sichere, dezentrale Kommunikation – Matrix