Coder Social home page Coder Social logo

vinicius-ianni / rust-zoom Goto Github PK

View Code? Open in Web Editor NEW

This project forked from security-union/videocall-rs

0.0 0.0 0.0 1.67 MB

zoom clone using rust for RESEARCH PURPOSES

License: MIT License

Shell 1.59% Rust 91.19% CSS 4.46% Makefile 0.72% HTML 0.12% Dockerfile 0.17% Smarty 1.65% JavaScript 0.09%

rust-zoom's Introduction

Live website

https://www.rustlemania.com/

News

https://www.reddit.com/r/rust/comments/14vwxfh/we_just_released_our_rust_webtransport/

▶️ YouTube Videos

Here's how we scaled it to support 1000 user per call https://youtu.be/LWwOSZJwEJI

The initial POC from 2022 https://www.youtube.com/watch?v=kZ9isFw1TQ8

video-call.rs

MVP of a teleconferencing system written in rust, both the backend and the UI.

How to try it out?

Setup

Technically you could run this with a single computer, but it is more fun if you use 2+.

Steps

  1. Open chrome://flags on all the computers that you want to use to test the tele-conferencing system, add the ip of the computer that you will use as the server to the Insecure origins treated as secure list.

Screen Shot 2022-10-30 at 10 00 43 PM

  1. Start the servers on the computer that you intend to use as the server using ACTIX_UI_BACKEND_URL=ws://<server-ip>:8080 make up (requires docker).

  2. If your server computer is behind a firewall, make sure that TCP ports 80 and 8080 are open

  3. Connect all computers to http://<server-ip>/meeting/<username>/<meeting-id>

  4. Make sure that you "allow" access to your mic and camera:

Screen Shot 2022-10-24 at 8 23 50 AM

  1. Click connect on both browsers, and enjoy:

Oct-24-2022 08-37-09

▶️ YouTube Channel

https://www.youtube.com/@securityunion

👉 Join our Discord Community

You can join our Discord Community, here is the invite link.

🫵 We need your haaalp!

We take pride on being community driven, there are many ways to collaborate, from filing an issue or, if you want to dive deeper, being part of our RFC Process

👨‍💻 Project Structure

Contains 3 sub-projects

  1. actix-api: actix web server
  2. yew-ui: Yew frontend
  3. types: json serializable structures used to communicate the frontend and backend.

Local Development

Dockerized workflow

  1. Install docker https://docs.docker.com/engine/install/
  2. Run one of the supported make commands
make test
make up
make down
make build

Without docker

Prerequisites

  1. Create a postgresql database that you can accessed without a password. The default database name is actix-api-db, i.e. the default connection string is postgresql://$USER@localhost/actix-api-db

  2. Install [trurl](see https://github.com/curl/trurl) and [nats-server]((see https://docs.nats.io/running-a-nats-service/introduction/installation)

Starting up the servers

  1. Run the script ./start_dev.sh.

    It examines various environment variables to control the behavior; see the script itself for details. By default it runs using websockets rather than webtransport (WEBTRANSPORT_ENABLED=0) and without encryption (E2EE_ENABLED=0).

  2. Connect your browser to http://localhost:8081/meeting/<username>/<meeting-id>

    You can make multiple connections (with varying usernames) from multiple browser windows or tabs.

    If you are using encryption (E2EE_ENABLED=1), you should lanuch Chrome with the necessary options for it to accept the local certificate by running ./launch_chrome.sh

👤 Contributors ✨


Dario

Griffin Obeid

Leone

Leone

Victor Martínez

The Actix websocket implementation contains fragments from https://github.com/JasterV/chat-rooms-actix in particular the usage of an actor to orchestrate all sessions and rooms.

Show your support

Give a ⭐️ if this project helped you!

rust-zoom's People

Contributors

darioalessandro avatar griffobeid avatar ronen avatar leon3s avatar jasterv avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.