@sofya-sdk/core
v1.0.1
Published
Core WebSocket client for EventRooms messaging
Maintainers
Readme
@sofya-sdk/core
Core WebSocket client for EventRooms messaging with auto-reconnection.
Installation
pnpm add @sofya-sdk/coreUsage
import { EventRoomsClient } from '@sofya-sdk/core';
const client = new EventRoomsClient({
url: 'wss://messaging.sofya.app/ws',
roomId: 'ROOM123',
role: 'desktop', // or 'mic'
autoReconnect: true,
maxReconnectAttempts: 5,
});
// Connect
client.connect();
// Listen to events
client.on('transcription', (payload) => {
console.log('Transcription:', payload);
});
// Listen to presence
client.onPresence((presence) => {
console.log('Clients in room:', presence.clientsLocal);
});
// Listen to errors
client.onError((error) => {
console.error('Error:', error.message);
});
// Listen to connection state
client.onConnectionState((state) => {
console.log('State:', state);
});
// Send events
client.sendEvent('transcription', { text: 'Hello', partial: false });
// Disconnect
client.disconnect();API
Constructor
new EventRoomsClient(config: EventRoomsConfig)Config:
url(string) - WebSocket URLroomId(string) - Room IDrole('desktop' | 'mic') - Client roleautoReconnect(boolean, optional) - Auto-reconnect on disconnect (default: true)maxReconnectAttempts(number, optional) - Max reconnection attempts (default: 5)reconnectDelay(number, optional) - Initial reconnection delay in ms (default: 1000)maxReconnectDelay(number, optional) - Max reconnection delay in ms (default: 30000)
Methods
connect()- Connect to EventRoomsdisconnect()- Disconnect from EventRoomssendEvent(event, payload)- Send custom eventon(event, handler)- Listen to event (returns unsubscribe function)onError(handler)- Listen to errors (returns unsubscribe function)onPresence(handler)- Listen to presence updates (returns unsubscribe function)onConnectionState(handler)- Listen to connection state changes (returns unsubscribe function)getConnectionState()- Get current connection stategetRoomId()- Get room IDgetRole()- Get client role
Features
- Auto-reconnection with exponential backoff
- Ping/pong heartbeat to keep connection alive
- Event name validation (regex + reserved names)
- Type-safe event handlers
- Connection state management
License
ISC
