UNPKG

uyem

Version:
135 lines (85 loc) 2.57 kB
# 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](https://kolserdav-portfolio.s3.eu-central-1.amazonaws.com/uyem2.gif) ## Know-how <details> <summary>WebRTC SFU Server</summary> ![docs/images/sfu1.png](./docs/images/sfu1.png) ## </details> ## Dependencies, --- - NodeJS v^16.\* - MariaDB v^10.\* - Coturn @latest --- ## ... or - NodeJS v^16.\* - docker-compose @latest <details> <summary>Docker Environment</summary> ```sh docker-compose up -d ``` - [docker-compose.ci.yml](./docker-compose.ci.yml) + [Coturn](https://github.com/coturn/coturn) + [Mariadb](https://mariadb.org/) - [docker-compose.yml](./docker-compose.yml) + [PhpMyAdmin](https://www.phpmyadmin.net/) ![docs/images/DockerContainersDBTurn.png](./docs/images/DockerContainersDBTurn.png) ## </details> --- ## Installation - Install source: ```sh 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](./docs.SSL.md) --- - To remote access between units using valid `iceServers` on client is required: --- ```javascript const iceServers = [ { urls: ['stun:127.0.0.1:3478'], }, { urls: ['turn:127.0.0.2:3478'], username: 'username', credential: 'password', }, ]; ``` See [docs/COTURN.md](docs/COTURN.md) for more details. --- ## Server preparation - Add property `migrate` to the `scripts` block of `package.json`: ```json "migrate": "uyem --db mysql://root:root@127.0.0.1:3306/uyem_db --migrate" ``` - Conducting migrations: ```sh npm run migrate ``` ## Usage on client - Import module styles: ```javascript import 'uyem/packages/client/dist/styles.css'; ``` - Import component: ```javascript import Uyem from 'uyem'; ``` ## Usage on sever ```javascript const { createServer } = require('uyem/server'); createServer({ port: 3233, db: 'mysql://root:root@127.0.0.1:3306/uyem_db' }); ``` ## Client examples - [ReactJS](examples/hello-world/src) - [Next.js](examples/ssr-client/pages) - [Without JSX](examples/without-jsx) ## Server examples - [Include server](examples/server) - [WS listener, database access](examples/server-ws) - [Event handlers](examples/server-handlers) ## Contributing See [docs/CONTRIBUTING.md](./docs/CONTRIBUTING.md)