Demonstrates WebRTCTransport with a minimal WebSocket signaling server.
See examples/README.md for quick start instructions.
server.ts- WebSocket signaling server (relays WebRTC offers/answers/ICE candidates)client.ts- Browser client with DotGame implementationindex.html- UI for creating/joining rooms
- Host creates a room and joins the signaling server
- Client joins the same room, receives list of existing peers
- Client initiates WebRTC connection to host (creates offer)
- Signaling server relays offer to host
- Host creates answer, signaling server relays it back
- ICE candidates are exchanged via signaling server
- Once WebRTC data channel is open, game session handshake begins
// Create WebRTC transport
const transport = new WebRTCTransport(peerId);
// Set signaling callback
transport.setSignalingCallbacks({
onSignal: (targetPeerId, signal) => {
signalingClient.sendSignal(targetPeerId, signal);
},
});
// Handle incoming signals from signaling server
signalingClient.onSignal = (fromPeerId, signal) => {
if (signal.type === 'description') {
transport.handleRemoteDescription(fromPeerId, signal.description);
} else {
transport.handleRemoteCandidate(fromPeerId, signal.candidate);
}
};
// Initiate connection to a peer (call after signaling is ready)
transport.connect(remotePeerId);