mirror of
https://github.com/xtr-dev/rondevu-client.git
synced 2025-12-10 02:43:25 +00:00
e1ca8e1c16669c180aaba2a2bb78aeac0eecfddf
- Add hasConnected flag to prevent duplicate connect events - Add leave() method to RondevuConnection to end sessions - Add leave() API method to call /leave endpoint - Version 0.3.5 The connect event will now only fire once per connection, fixing the issue where it could fire multiple times as the WebRTC connectionState transitions. The leave() method allows either peer to end the session by deleting the offer from the server. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Rondevu
🎯 Simple WebRTC peer signaling
Connect peers directly by ID with automatic WebRTC negotiation.
Related repositories:
- rondevu-server - HTTP signaling server
- rondevu-demo - Interactive demo
@xtr-dev/rondevu-client
TypeScript client library for Rondevu peer signaling and WebRTC connection management. Handles automatic signaling, ICE candidate exchange, and connection establishment.
Install
npm install @xtr-dev/rondevu-client
Usage
Browser
import { Rondevu } from '@xtr-dev/rondevu-client';
const rdv = new Rondevu({
baseUrl: 'https://api.ronde.vu',
rtcConfig: {
iceServers: [
{ urls: 'stun:stun.l.google.com:19302' },
{ urls: 'stun:stun1.l.google.com:19302' }
]
}
});
// Create an offer with custom ID
const connection = await rdv.offer('my-room-123');
// Or answer an existing offer
const connection = await rdv.answer('my-room-123');
// Use data channels
connection.on('connect', () => {
const channel = connection.dataChannel('chat');
channel.send('Hello!');
});
connection.on('datachannel', (channel) => {
if (channel.label === 'chat') {
channel.onmessage = (event) => {
console.log('Received:', event.data);
};
}
});
Node.js
import { Rondevu } from '@xtr-dev/rondevu-client';
import wrtc from '@roamhq/wrtc';
import fetch from 'node-fetch';
const rdv = new Rondevu({
baseUrl: 'https://api.ronde.vu',
fetch: fetch as any,
wrtc: {
RTCPeerConnection: wrtc.RTCPeerConnection,
RTCSessionDescription: wrtc.RTCSessionDescription,
RTCIceCandidate: wrtc.RTCIceCandidate,
}
});
const connection = await rdv.offer('my-room-123');
connection.on('connect', () => {
const channel = connection.dataChannel('chat');
channel.send('Hello from Node.js!');
});
API
Main Methods:
rdv.offer(id)- Create an offer with custom IDrdv.answer(id)- Answer an existing offer by ID
Connection Events:
connect- Connection establisheddisconnect- Connection closederror- Connection errordatachannel- New data channel receivedstream- Media stream received
Connection Methods:
connection.dataChannel(label)- Get or create data channelconnection.addStream(stream)- Add media streamconnection.close()- Close connection
Version Compatibility
The client automatically checks server compatibility via the /health endpoint. If the server version is incompatible, an error will be thrown during initialization.
License
MIT
Description
Languages
TypeScript
96.1%
JavaScript
3.9%