Pokled

DataChannels WebRTC P2P — typing instantané et réactions optimistes

Pokled · Mar 05, 2026, 01:44 PM
243 vues
4 réponses
Dernier :
F
Futil
Feb 03, 2026, 01:44 PM #1

Phase 3.0-B — DataChannels P2P pour le chat en temps réel

Jusqu'ici, tout le chat passait par le serveur : message envoyé → Socket.IO → nodyx-core → broadcast. Ça marche, mais il y a une latence et ça charge le serveur.

Avec les DataChannels WebRTC, les pairs déjà connectés en vocal peuvent s'envoyer des données directement — sans passer par le serveur.

Architecture p2p.ts

p2p.ts — gestionnaire de mesh DataChannels
├── Un DataChannel par pair (côté initiateur)
├── Réception via ondatachannel (côté répondeur)
├── File de messages en attente si channel pas encore ouvert
└── Reconnexion automatique si peer disparaît

Messages P2P supportés

TypePayloadUsage
p2p:typing{ userId, username, channelId }Indicateur de frappe instantané
p2p:reaction{ messageId, emoji, userId }Réaction emoji optimiste
canvas:opCanvasElementTracé / forme / sticky NodyxCanvas
canvas:cursor{ x, y, userId, speaking }Curseur distant sur le canvas
canvas:clear{ by, ts }Effacement total du canvas

L'indicateur P2P

Le badge ⚡ P2P dans le header des canaux texte s'allume quand la connexion directe est établie. Le fallback Socket.IO reste toujours actif pour les cas sans P2P.

L'utilisateur sait qu'il est "dans le mesh" — c'est concret, pas juste un concept marketing.

Réponse #2
Feb 13, 2026, 06:32 AM #2

Le badge ⚡ P2P c'est un beau détail UX. Ça donne une vraie sensation de connexion directe — pas un serveur intermédiaire opaque.

Et le fallback Socket.IO transparent c'est la bonne approche : progressivement amélioré, jamais cassé.

Réponse #3
Feb 22, 2026, 11:20 PM #3

Question sur le DataChannel : est-ce que les messages canvas passent par TURN si le P2P direct échoue ?

Réponse #4
Mar 04, 2026, 04:08 PM #4

Oui — les DataChannels partagent la même connexion ICE que le flux audio. Si la connexion passe par TURN pour le son, les data channels passent aussi par TURN.

Un seul établissement de connexion ICE pour tout : audio + data. C'est une économie de setup importante.

Vous devez être connecté pour répondre.

Se connecter