ChatForYou v2๋ Node.js ํ๋ก ํธ์๋์ Spring Boot ๋ฐฑ์๋๋ก ๊ตฌ์ฑ๋ ์ค์๊ฐ ํ์์ฑํ ๋ฐ ๊ฒ์ ํ๋ซํผ์ ๋๋ค. WebRTC ๊ธฐ์ ์ ํ์ฉํ N:M ํ์์ฑํ ๊ณผ CatchMind ๊ฒ์, ํ์ผ ๊ณต์ ๋ฑ ๋ค์ํ ์ธํฐ๋ํฐ๋ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ChatForYou_v2/
โโโ nodejs-frontend/ # Node.js ํ๋ก ํธ์๋ ์๋ฒ (ํฌํธ: 3000)
โ โโโ static/ # ์ ์ ํ์ผ (JS, CSS, ์ด๋ฏธ์ง)
โ โโโ templates/ # HTML ํ
ํ๋ฆฟ
โ โโโ config/ # ํ๊ฒฝ๋ณ ์ค์ ํ์ผ
โ โโโ server.js # Node.js ์๋ฒ
โโโ springboot-backend/ # Spring Boot ๋ฐฑ์๋ API (ํฌํธ: 8080)
โ โโโ src/main/java/ # Java ์์ค ์ฝ๋
โ โโโ src/main/resources/ # ์ค์ ํ์ผ
โ โโโ build.gradle # Gradle ๋น๋ ์ค์
โโโ README.md
- Node.js - ํ๋ก ํธ์๋ ์๋ฒ
- jQuery - DOM ์กฐ์ ๋ฐ AJAX
- Bootstrap 5 - UI ํ๋ ์์ํฌ
- WebRTC - ์ค์๊ฐ ํ์ํต์
- Socket.IO - ์ค์๊ฐ ํต์
- Java 17 - ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- Spring Boot - ๋ฐฑ์๋ ํ๋ ์์ํฌ
- Spring WebSocket - ์ค์๊ฐ ํต์
- Stomp - ๋ฉ์์ง ํ๋กํ ์ฝ
- Kurento Media Server - ๋ฏธ๋์ด ์๋ฒ
- Gradle - ๋น๋ ๋๊ตฌ
- Docker - ์ปจํ ์ด๋ํ
- Kubernetes - ์ค์ผ์คํธ๋ ์ด์
- Prometheus & Grafana - ๋ชจ๋ํฐ๋ง
- ์ฑํ ๋ฐฉ ๊ด๋ฆฌ: ์ฑํ ๋ฐฉ ์กฐํ, ์์ฑ, ์ญ์ , ์์
- ๋ฌด์ค๋จ ์ฑํ ๋ฐฉ ๊ด๋ฆฌ : Redis ๊ธฐ๋ฐ ์๋ฒ ์ฌ๋ฐฐํฌ ์์๋ ์ฑํ ๋ฐฉ ์ ์ง ๊ด๋ฆฌ
- ๋ณด์ ๊ธฐ๋ฅ: ์ฑํ ๋ฐฉ ์ํธํ ๋ฐ ์ ๊ทผ ์ ์ด
- ์ฌ์ฉ์ ๊ด๋ฆฌ: ๋๋ค์ ์ค๋ณต ๊ฒ์ฌ ๋ฐ ์๋ ์กฐ์
- ์ค์๊ฐ ๋ฉ์์ง: DataChannel ๊ธฐ๋ฐ ์ค์๊ฐ ์ฑํ
- WebRTC ํ์์ฑํ : P2P ๊ธฐ๋ฐ ์์ฑ/์์ ํตํ
- Kurento Media Server: N:M ํ์์ฑํ ์ง์
- ํ๋ฉด ๊ณต์ : ์ค์๊ฐ ํ๋ฉด ๊ณต์ ๊ธฐ๋ฅ
- ์ฅ๋น ์ ํ: ๋ง์ดํฌ/์คํผ์ปค ์ ํ ๊ธฐ๋ฅ
- DataChannel: ํ์ผ ์ ์ก ๋ฐ ์ถ๊ฐ ์ฑํ
- ํ ์คํธ ์ค๋ฒ๋ ์ด: ๋ฌธ์ ์ฑํ ๋ด์ฉ์ ๋น๋์ค์ ํ์ํ๋ ํ ์คํธ ์ค๋ฒ๋ ์ด ๊ธฐ๋ฅ
- ์ค์๊ฐ ์๋ง: ์์ฑ์ ํตํ ์ค์๊ฐ ์๋ง ๊ธฐ๋ฅ
- SSE ๊ธฐ๋ฐ ์ค์๊ฐ ์ฑํ ๋ชฉ๋ก ํ์ธ: SSE ๊ธฐ๋ฐ ์ค์๊ฐ ์ฑํ ๋ชฉ๋ก ํ์ธ ๊ธฐ๋ฅ
- CatchMind ๊ฒ์: N ๋ผ์ด๋ ๊ทธ๋ฆผ ๋ง์ถ๊ธฐ ๊ฒ์
- ์ค์๊ฐ ์บ๋ฒ์ค: ์ค์๊ฐ ๊ทธ๋ฆผ ๊ทธ๋ฆฌ๊ธฐ
- ์์ฑ ์ธ์: ์์ฑ์ ํตํ ์ ๋ต ํ์ธ
- ๋ชจ๋ฐ์ผ ์ง์: ๋ชจ๋ฐ์ผ ๊ธฐ๊ธฐ ํฐ์น ์ด๋ฒคํธ
- Dynamic Topic: ChatGPT ๊ธฐ๋ฐ ๋์ ์ฃผ์ ์์ฑ
- MinIO Object Storage: ์ค์๊ฐ ํ์ผ ๊ณต์
- ํ์ผ ์ ๋ก๋/๋ค์ด๋ก๋: ์ด๋ฏธ์ง ํ์ผ ์ง์
- ์ฉ๋ ์ ํ: ์ต๋ 10MB
- ํ์ฅ์ ์ ํ: jpg, jpeg, png, gif
- ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง: Prometheus & Grafana
- ์ ์ ์ฐจ๋จ: Blacklist IP ๊ด๋ฆฌ
- ๋ฐฐ์น ์์ : ํจ์จ์ ์ธ ๋ฐฉ ๊ด๋ฆฌ
- RESTful API: ํ์คํ๋ API ์ค๊ณ
- ๋ก์ปฌ ํ๊ฒฝ: http://localhost:3000/chatforyou
- ์ด์ ํ๊ฒฝ: https://hjproject.kro.kr/chatforyou
๋ณธ ์ฌ์ดํธ๋ ์ค์ง Spring Boot์ Node.js, JavaScript๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ํ์ฌ WebRTC ๋ฐ WebSocket ๊ธฐ์ ์ ์ฌ์ฉํ ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๊ณต๋ถํ๊ธฐ ์ํ ์ฌ์ดํธ์ ๋๋ค. ๋ฐ๋ผ์ ํด๋น ์ฌ์ดํธ๋ฅผ ์ด์ฉํจ์ ์์ด ๋ฐ์ํ ์ ์๋ ๋ชจ๋ ๋ฒ์ ์ฑ ์์ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ์๋ ๋ณธ์ธ์๊ฒ ์์์ ๋ช ์ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.
This site is only for studying various functions using WebRTC and WebSocket technologies based on Spring Boot, Node.js and JavaScript. Please note that all legal responsibilities that may arise from using this site are the responsibility of the person using the site.
- Node.js 16+ ์ค์น
- Java 17 ์ค์น
- Kurento Media Server ์ค์น
- TURN Server (coturn) ์ค์น
- Redis ์ค์น
cd nodejs-frontend
# ์์กด์ฑ ์ค์น
npm install
# ๋ก์ปฌ ํ๊ฒฝ ๋น๋
npm run local
# ์๋ฒ ์คํ (ํฌํธ: 3000)
npm run startcd springboot-backend
# Gradle ๋น๋
./gradlew clean build
# JAR ์คํ (ํฌํธ: 8080)
java -Dkms.url=ws://[KMS_IP]:[PORT]/kurento -jar build/libs/*.jar// nodejs-frontend/config/config.local.js
window.__CONFIG__ = {
API_BASE_URL: 'http://localhost:8080/chatforyou/api',
};
// nodejs-frontend/config/config.prod.js
window.__CONFIG__ = {
API_BASE_URL: {์ฌ์ฉ์ ์๋น์ค ๋๋ฉ์ธ},
};# application.properties
server.port=8080
# Kurento Media Server ์ค์
kms.url=ws://localhost:8888/kurento# ํ๋ก ํธ์๋ Docker ๋น๋
cd nodejs-frontend
docker build -t chatforyou-frontend .
# ๋ฐฑ์๋ Docker ๋น๋
cd springboot-backend
docker build -t chatforyou-backend .
# Docker Compose ์คํ
docker-compose up -d| ํ๋ก์ธ์ค ๋จ๊ณ | ๋์ ์ ์์์๊ฐ | ๋์ ํ ์์์๊ฐ | ์ ๊ฐ ์๊ฐ | ํจ์จ์ฑ ํฅ์๋ฅ |
|---|---|---|---|---|
| Gradle ๋น๋ | 105.2์ด | 66์ด | 39.2์ด | 37.3% โ |
| ์ด๋ฏธ์ง ์ ๋ก๋ | 25์ด | 9์ด | 16์ด | 64.0% โ |
| ๋ฐฐํฌ ์๋ํ | 15์ด(์๋) | 14์ด(์๋) | 1์ด | 6.7% โ |
| ์ ์ฒด ํ๋ก์ธ์ค | 145.2์ด | 89์ด | 56.2์ด | 38.7% โ |
- Python API Server: chatforyou-python-api
- CatchMind ๊ฒ์์ ๋์ ์ฃผ์ ์์ฑ์ ์ํ ChatGPT ์ฐ๋ ์๋ฒ
| ์ญํ | ์ด๋ฆ | ๋ด๋น ์ ๋ฌด | ์ด๋ฉ์ผ | ํ๋กํ |
|---|---|---|---|---|
| ๐ ํ๋ก์ ํธ ๋ฆฌ๋ | ์ฅ์ธ์กด | ํ๋ก์ ํธ ์ด๊ด ยท ํ์คํ ๊ฐ๋ฐ ยท DevOps ๋ด๋น | wkdtpwhs@gmail.com | GitHub Tistory |
| โ๏ธ ๋ฐฑ์๋ ๊ฐ๋ฐ | ๊น๋ํ | ๋ฐฑ์๋ ยท ํ๋ก ํธ์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ | ์ด๋ฉ์ผ ์์ |
GitHub ์์ |
| ๐ป ํ์คํ ๊ฐ๋ฐ | ๋ฐํ์ | ๋ฐฑ์๋ ยท ํ๋ก ํธ์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ | ์ด๋ฉ์ผ ์์ |
GitHub ์์ |
| ๐จ ๋์์ธ ๋ฐ ์น ํผ๋ธ๋ฆฌ์ฑ ์ด๊ด | ์๊ฐํ | ์น ํผ๋ธ๋ฆฌ์ฑ ยท UI/UX ๋์์ธ | ์ด๋ฉ์ผ ์์ |
GitHub ์์ |
ํ์๋ค์ ๊ฐ๋ณ ์ฐ๋ฝ์ฒ์ GitHub ํ๋กํ์ ๊ณง ์ ๋ฐ์ดํธ๋ ์์ ์ ๋๋ค.
Copyright 2024 SejonJang (wkdtpwhs@gmail.com)
์ด ํ๋ก์ ํธ๋ Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License ํ์ ๋ผ์ด์ ์ค๋ฉ๋๋ค.
๋น์์ ์ ์ฌ์ฉ๋ง ํ์ฉ๋ฉ๋๋ค:
- โ ๊ฐ์ธ์ , ๊ต์ก์ , ์ฐ๊ตฌ ๋ชฉ์ ์ ์ฌ์ฉ
- โ ์คํ์์ค ๊ธฐ์ฌ ๋ฐ ๊ฐ์
- โ ์์ ์ ๋ชฉ์ ์ ์ฌ์ฉ ๋ฐ ๋ฐฐํฌ
- โ ์์ต ์ฐฝ์ถ์ ์ํ ํ์ฉ
์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ์กฐํ์ธ์.





