How to use WebRTC DataChannels for peer-to-peer browser game multiplayer?
Open an RTCPeerConnection, exchange SDP/ICE through a small signaling server (WebSocket or similar), then call createDataChannel() on each side. Use unreliable, unordered channels for fast-moving game state and reliable channels for chat or events. Data never passes through a server once connected.