https://github.com/kotborealis/synch
Совместный просмотр кинца
https://github.com/kotborealis/synch
cinema javascript js video
Last synced: 2 months ago
JSON representation
Совместный просмотр кинца
- Host: GitHub
- URL: https://github.com/kotborealis/synch
- Owner: kotborealis
- Created: 2020-04-07T12:38:30.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-03-03T22:20:41.000Z (over 2 years ago)
- Last Synced: 2025-04-02T07:41:19.776Z (6 months ago)
- Topics: cinema, javascript, js, video
- Language: JavaScript
- Homepage: http://synch.awooo.ru/
- Size: 1.68 MB
- Stars: 6
- Watchers: 2
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
David Synch
Платформа для совместного просмотра кинца и прочей ереси.
## Зачем оно мне и как этим пользоваться?
Идея Синча в совместном просмотре кинца.
Чтобы воспользоваться им, нужно иметь:* Залитый куда-то файл с кинцом, доступный по прямой ссылке.
* Опционально, такой же файл с субтитрами srt/vtt/ass, доступный по прямой ссылке.Лучше всего в браузерах поддерживаются видеофайлы с кодеком h264 для видео и aac/mp3 для аудио.
Лучшая поддержка воспроизведения видеофайлов в Хроме/chromium-based браузерах.## Архитектура
Архитектура для этой приложухи сворована из моего домашнего проекта (чата), и она очень оверинжинирнута.
Основной замысел — микросервисы на бэкенде.
Имеем набор сервисов, реализующих логику, и роутер, который обеспечивает взаимодействие с клиентами
и сервисов между собой.Роутер и сервисы общаются через pub/sub Redis'а.
Роутер и клиенты — через WebSockets.`docker-compose.yml` содержит 5 сервисов:
* mongo — инстанс MongoDB для, очевидно, хранения данных.
* redis — инстанс Redis для организации межпроцессного взаимодействия.
* frontend — фронтенд Синча, внутри сборка фронта и инстанс Nginx'а для хостинга.
* backend-router — роутер бэкенда, обеспечивает взаимодействие фронтенда и бэкендовских сервисов.
* backend-cinema — сервис бэкенда, реализует непосредственно *бизнес-логику*.## Development
* Copy `./backend/stub.env` to `./backend/.env`.
* Run MongoDB and Redis:
```
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d mongo redis
```
* Run backend/router:
```
cd backend
npm run router
```
* Run backend/cinema:
```
cd backend
npm run cinema
```
* Run frontend:
```
cd frontend
npm start
```### Note on another reverse-proxy
If you run *yet another* reverse-proxy (like nginx) on top of
this, you might need to configure it to properly handle websocket connections.
For nginx:
```
location /ws.lc/ {
proxy_pass http://127.0.0.1:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
```## Deployment
* Minimal:
```
touch backend/services/router/.env
touch backend/services/cinema/.env
docker-compose up
```
* Default configs should be just fine.