Thanks to visit codestin.com
Credit goes to github.com

Skip to content

markisha64/wpp-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

140 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WPP Server

WPPServer poslužiteljski je dio fullstack aplikacije za real-time komunikaciju pomoću WebSocketa (poruke i signalizacija) i WebRTC (video pozivi). Izgrađen je pomoću Actix Web frameworka za izradu Rest API-ja. Server sluša na definiranom portu za HTTP requestove te na ruti /ws/ dopušta UPGRADE na WebSocket konekciju. Serveru su također potrebni UDP portovi za Mediasoup konekcije (audio/video).

Build Requirements

Prije no što možeš build-ati cijeli projekt, moraš instalirati neke alate. Treba ti Rust (verzija 1.85 ili veća), g++ (verzija 8 ili veća) ili clang (sa podrškom za C++ 17) te cc i c++ moraju biti sym-linkani te pokazivati na gcc/g++ ili clang/clang++.

Run Requirements

Poslužitelj ovisi o nekim drugim alatima.

Cloudflare

Zbog jednostavnosti, pri developmentu poslužitelja, oslonio sam se na Cloudflare TURN Server. Ako ne želite ovisiti o Cloudflare-u, dovoljno je postaviti ICE_SERVERS env varijablu te compile-ati sa flag-om --no-default-features. Više informacija o TURN-u i STUN-u.

Redis

Za potrebe sinkronizacija WebSocket konkecija između Actix radnika, koristimo Redis. Redis je in-memory key-value baza podataka, najčešće korištena kao ditribuirani cache ili broker poruke. Poslužitelj koristi Redis-ov Pub/Sub mehanizam za dostavljanje poruka između raznih Actix radnika ili više instanci servera. Definiramo poslužitelju Redis pomoću REDIS_URL env varijable.

MongoDB

Zbog jednostavnosti i brzine razvoja, odabran je MongoDB kao glavna baza podataka. MongoDB je dokument orijentirana baza podataka klasificirana kao NoSQL. Definiramo poslužitelju MongoDB pomoću MONGODB_URL env varijable.

Env

Za pokretanje poslužitalja potrebno nam je mnoštvo env varijabli. Možemo ih koristiti na standardni način ili definirati .env datoteku.

MONGODB_URL=
SECRET_KEY=
PORT= # http/ws port
REDIS_URL=

# Cloudflare
CF_TOKEN=
CF_ID=
# no Cloudflare
ICE_SERVERS={\"iceServers\":[{\"urls\":\"stun:stun.l.google.com:19302\"}]}

# binding ip (use 0.0.0.0 inside Docker)
HOST=127.0.0.1
# announce ip
HOST_URL=127.0.0.1
# UDP port range
PORT_MIN=40000
PORT_MAX=40100

Building

Osnovna komanda za pokretanje izvornog koda je

cargo run

Ako želimo compile-ati sa svim optimizacijama koristimo flag --release

cargo run --release

Isto vrijedi za flag --no-default-features. Također možemo umjesto direktnog pokretanja samo buildati binary.

cargo build --release

Novo izgraženi binary nalazi se u ./target/<debug|release>/wpp-server(.exe)

Docker

Za standardiziranije pokretanje (npr. ako želimo koristiti neki VPS ili Google Cloud run) možemo koristiti Docker.

docker build -f Dockerfile -t wpp-server .
docker run --env-file .env -d wpp-server

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors