@true-vroom/client-js
v0.1.1
Published
Vroom Core SDK - Platform-agnostic RTC abstraction layer
Readme
Vroom Client JS
Platform-agnostic Core SDK for building real-time communication experiences.
Features
- Simple API - Initialize once, connect to rooms with a single call
- Auto Token Exchange - SDK handles authentication automatically
- Type-Safe - Full TypeScript support
- Production Ready - Auto-reconnect and error handling built-in
Installation
npm install @true-vroom/client-jsReact Native
WebRTC globals are initialized automatically inside Vroom.connect() — no manual polyfill setup required.
For RN-specific helpers (e.g., RTCView for rendering remote video), use the dedicated subpath:
import { RTCView, MediaStream } from '@true-vroom/client-js/react-native'Required peer dependencies
npm install @livekit/react-native @livekit/react-native-webrtcThen on iOS, run pod install.
Quick Start
import { Vroom, SessionEvent } from '@true-vroom/client-js'
// 1. Initialize (once at app startup)
await Vroom.init({ apiKey: 'your-api-key' })
// 2. Connect to room
const session = await Vroom.connect({
roomName: 'meeting-123',
user: { id: 'user-1', displayName: 'Alice', role: 'host' },
type: 'group',
media: { audio: true, video: true },
eventHandlers: {
[SessionEvent.ParticipantJoined]: ({ participant }) => {
console.log(`${participant.displayName} joined`)
},
[SessionEvent.TrackAdded]: ({ track }) => {
if (track.mediaStreamTrack) {
videoElement.srcObject = new MediaStream([track.mediaStreamTrack])
}
}
}
})
// 3. Control media
session.disableMic()
session.enableCamera()
// 4. Disconnect
await session.disconnect()API Reference
Vroom
| Method | Description |
|--------|-------------|
| init(config) | Initialize SDK with API key |
| connect(params) | Connect to room |
| reset() | Reset SDK state |
Session
| Method | Description |
|--------|-------------|
| enableMic() / disableMic() | Toggle microphone |
| enableCamera() / disableCamera() | Toggle camera |
| switchDevice(options) | Switch audio/video input or output device |
| getActiveDevice(kind) | Get currently active device ID |
| getParticipants() | Get all participants |
| room | Room info (name, sid, createdAt) — immutable for the connection |
| disconnect() | Disconnect from room |
| on(event, handler) | Add event listener |
Events
| Event | Description |
|-------|-------------|
| SessionEvent.Connected | Connected to room |
| SessionEvent.Disconnected | Disconnected from room |
| SessionEvent.ParticipantJoined | Participant joined |
| SessionEvent.ParticipantLeft | Participant left |
| SessionEvent.TrackAdded | Track published |
| SessionEvent.TrackRemoved | Track unpublished |
| SessionEvent.Error | Error occurred |
Error Handling
try {
await Vroom.connect({ ... })
} catch (error) {
if (error.code === 'E_INVALID_API_KEY') {
// Handle invalid API key
}
}Contributing
See CONTRIBUTING.md.
License
MIT
