JSPM

  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q92864F
  • License MIT

WebRTC client-server SFU application

Package Exports

  • uyem
  • uyem/packages/client/dist/Main.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (uyem) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

uyem

Selective Forwarding Unit (SFU) is a WebRTC web application library, the server part of which is written in Node, and the client part is a ReactJS/Next.js shared component.

https://kolserdav-portfolio.s3.eu-central-1.amazonaws.com/uyem2.gif

Know-how

WebRTC SFU Server

docs/images/sfu1.png

Dependencies,


  • NodeJS v^16.*
  • MariaDB v^10.*
  • Coturn @latest

... or

  • NodeJS v^16.*
  • docker-compose @latest
Docker Environment
docker-compose up -d

docs/images/DockerContainersDBTurn.png


Installation

  • Install source:
npm i uyem

Settings

  • To be able to create connections on a host other than localhost, you need to connect SSL certificates.

Sample setup SSL certificates from Let's Encrypt for client and for server together with nginx see docs/SSL.md


  • To remote access between units using valid iceServers on client is required:

const iceServers = [
  {
    urls: ['stun:127.0.0.1:3478'],
  },
  {
    urls: ['turn:127.0.0.2:3478'],
    username: 'username',
    credential: 'password',
  },
];

See docs/COTURN.md for more details.


Server preparation

  • Add property migrate to the scripts block of package.json:
"migrate": "uyem --db mysql://root:root@127.0.0.1:3306/uyem_db --migrate"
  • Conducting migrations:
npm run migrate

Usage on client

  • Import module styles:
import 'uyem/packages/client/dist/styles.css';
  • Import component:
import Uyem from 'uyem';

Usage on sever

const { createServer } = require('uyem/server');

createServer({ port: 3233, db: 'mysql://root:root@127.0.0.1:3306/uyem_db' });

Client examples

Server examples

Contributing

See docs/CONTRIBUTING.md