mediasfu-shared
v1.0.1
Published
Framework-agnostic shared logic for MediaSFU - works with React, Vue, Angular, Svelte, and any JavaScript framework
Downloads
15
Maintainers
Readme
📦 About
mediasfu-shared is the universal shared library that powers all MediaSFU framework-specific SDKs (React, Vue, Angular, etc.). It provides the core WebRTC functionality, media handling, socket communication, and state management that enables real-time video conferencing, screen sharing, recording, and interactive features across all MediaSFU implementations.
This package contains framework-agnostic implementations of:
- Media Consumers - WebRTC transport and stream management
- Core Methods - Room creation, participant handling, recording controls
- Socket Management - Real-time communication with MediaSFU servers
- Type Definitions - Comprehensive TypeScript types for all MediaSFU features
- Utility Functions - Helper methods for media processing and state management
🎯 Key Features
- ✅ Framework Agnostic - Pure TypeScript/JavaScript implementation
- ✅ WebRTC Integration - Full mediasoup-client support for advanced WebRTC features
- ✅ Type-Safe - Complete TypeScript definitions for all APIs
- ✅ Real-Time Communication - Socket.io integration for instant updates
- ✅ Modular Architecture - Import only what you need for optimal bundle size
- ✅ Production Ready - Battle-tested in MediaSFU's production environment
📥 Installation
npm install mediasfu-sharedPeer Dependencies
This package requires the following peer dependencies:
npm install socket.io-client mediasoup-client🚀 Usage
Importing Core Functions
import {
connectSocket,
joinRoomClient,
updateRoomParametersClient,
createDeviceClient,
SocketManager
} from 'mediasfu-shared';
// Initialize socket connection
const socket = await connectSocket({
apiUserName: 'your-api-username',
apiKey: 'your-api-key',
apiToken: 'your-api-token',
link: 'https://mediasfu.com/socket'
});
// Create SocketManager instance
const socketManager = new SocketManager({ socket });Using Consumers
import {
consumerResume,
addVideosGrid,
prepopulateUserMedia
} from 'mediasfu-shared';
// Resume a paused consumer
await consumerResume({
id: 'consumer-id',
parameters: roomParameters,
socket: socketManager.socket
});
// Add video streams to grid
await addVideosGrid({
consumers: activeConsumers,
parameters: roomParameters
});Type Definitions
import type {
Participant,
Transport,
Stream,
EventType,
ShowAlert,
CoHostResponsibility,
Settings
} from 'mediasfu-shared';
const participant: Participant = {
id: 'participant-123',
name: 'John Doe',
audioID: 'audio-stream-id',
videoID: 'video-stream-id',
islevel: '1'
};🏗️ Package Structure
mediasfu-shared/
├── consumers/ # WebRTC consumer management
│ ├── addVideosGrid
│ ├── consumerResume
│ └── prepopulateUserMedia
├── methods/ # Core functionality methods
│ ├── breakoutRoomsMethods/
│ ├── recordingMethods/
│ ├── participantsMethods/
│ ├── messageMethods/
│ ├── mediaMethods/
│ └── utils/
├── producers/ # Producer client implementations
├── sockets/ # Socket.io management
├── types/ # TypeScript type definitions
└── index.ts # Main entry point📚 Documentation
For detailed documentation on specific methods and types, please visit:
- Main Documentation: https://mediasfu.com/documentation
- API Reference: https://mediasfu.com/docs
- React SDK: mediasfu-reactjs
- Vue SDK: mediasfu-vue
🔗 Related Packages
mediasfu-shared is used by all MediaSFU framework-specific packages:
- mediasfu-reactjs - React components and hooks
- mediasfu-vue - Vue 3 components and composables
- mediasfu-angular - Angular components and services
🤝 Integration with MediaSFU Community Edition (CE)
This package is designed to work seamlessly with MediaSFU CE, our open-source community edition server. MediaSFU CE provides:
- Complete WebRTC SFU server implementation
- Recording and streaming capabilities
- Breakout rooms and advanced features
- Free for self-hosting
💬 Support
Need help? We're here for you!
- GitHub Issues: Report bugs or request features
- Email Support: [email protected]
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
