WebRTC client-server SFU application
npm install uyemSelective 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
WebRTC SFU Server
---
- NodeJS v^16.\*
- MariaDB v^10.\*
- Coturn @latest
---
- NodeJS v^16.\*
- docker-compose @latest
Docker Environment
``sh`
docker-compose up -d
- docker-compose.ci.yml + Coturn + Mariadb
- docker-compose.yml + PhpMyAdmin
!docs/images/DockerContainersDBTurn.png
---
- Install source:
`sh`
npm i uyem
- 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:
---
`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 for more details.
---
- 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
- Import module styles:
`javascript`
import 'uyem/packages/client/dist/styles.css';
- Import component:
`javascript`
import Uyem from 'uyem';
`javascript
const { createServer } = require('uyem/server');
createServer({ port: 3233, db: 'mysql://root:root@127.0.0.1:3306/uyem_db' });
``
- ReactJS
- Next.js
- Without JSX
- Include server
- WS listener, database access
- Event handlers