π 곡λΆνλ μ§μ§μνμΉ΄λ μ²μμ΄μ§?
[Node js Project - 4] Zoom Clone with Node JS λ³Έλ¬Έ
[Node js Project - 4] Zoom Clone with Node JS
μ§μ§μνμΉ΄ 2023. 6. 18. 01:06<λ³Έ λΈλ‘κ·Έλ Traversy Media μ μ νλΈλ₯Ό μ°Έκ³ ν΄μ 곡λΆνλ©° μμ±νμμ΅λλ€ :-)>
=> Build a Zoom Clone with Node JS for Beginners
π κ°λ° νκ²½ μ€μ
npm init
npm i express uuid ejs
npm install -D nodemon
π package.json
{
"name": "zoomclone",
"version": "1.0.0",
"description": "- nodejs init - first view init - create a room id - add ability to view our own video - add ability to allow others to stream their video - add styling - add ability to create message - add mute button - add stop video button",
"main": "server.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"ejs": "^3.1.9",
"express": "^4.18.2",
"nodemon": "^2.0.22",
"peer": "^1.0.0",
"peerjs": "^1.4.7",
"socket.io": "^4.6.2",
"uuid": "^9.0.0"
}
}
π Socket.io
: node.js κΈ°λ° μ€μκ° μΉ μ ν리μΌμ΄μ μ§μ λΌμ΄λΈλ¬λ¦¬
π ν΄λΌμ΄μΈνΈ -> μλ²
: ν΄λΌμ΄μΈνΈκ° μλ²μκ² μ μ‘ν λ©μμ§ μμ
io.on
// νμ¬ μ μλμ΄ μλ ν΄λΌμ΄μΈνΈλ‘λΆν° λ©μμ§λ₯Ό μμ νλ €λ©΄ on λ©μλ μ¬μ©
// 'connection' : socket.ioμ κΈ°λ³Έ μ΄λ²€νΈ, μ¬μ©μκ° μΉμ¬μ΄νΈμ μ μνλ©΄ μλμΌλ‘ λ°μνλ μ΄λ²€νΈ
π μλ² -> ν΄λΌμ΄μΈνΈ
: μλ²κ° ν΄λΌμ΄μΈνΈμκ² λ©μμ§ μ μ‘
io.emit
// μλ²κ° νμ¬ μ μν΄μλ λͺ¨λ ν΄λΌμ΄μΈνΈμκ² μ΄λ²€νΈ μ λ¬
socket.emit
// μλ²μͺ½μμ eventλ₯Ό λ°μμν€λ ν¨μ
// μλ²μμ μ΄λ²€νΈ λ°μμν€λ©΄ ν΄λΌμ΄μΈνΈ νμ΄μ§μ ν΄λΉ μ΄λ²€νΈ 리μ€λμμ μ²λ¦¬
// ν΄λΉ μμΌμ ν΅ν΄ ν΄λΌμ΄μΈνΈμκ² λ©μμ§ μ μ‘
π WebRTC
: ν΅μ νμ€μΌλ‘, μΉ λΈλΌμ°μ κ° μ€μκ° μμ/μμ±/λ°μ΄ν° ν΅μ μ κ°λ₯
: μ¦ λ³λμ νλ¬κ·ΈμΈμ΄λ νλ‘κ·Έλ¨μ΄ νμ μμ
: WebRTCλ P2P κ΅¬μ‘°λ‘ λμ΄μμΌλ©°, κΈ°κΈ°κ° ν΅μ νκΈ° λλ¬Έμ μλ²μ μ±λ₯μ΄ ν¬κ² νμνμ§ μμ
π PeerJS
: WebRTCλ₯Ό μ½κ² μ¬μ©νκΈ° μν΄ λ§λ€μ΄μ§ wrapper
: IDλ§ μ§μ ν΄μ£Όλ©΄ μμ½κ² P2P μ°κ²°μ μ²λ¦¬
npm install peer
π μ€ κΈ°λ₯
π μΉμΊ ꡬννκΈ°
π μλ‘μ΄ User μΆκ°νκΈ°
// server.js
// νμ¬ μ μλμ΄ μλ ν΄λΌμ΄μΈνΈλ‘λΆν° λ©μμ§λ₯Ό μμ
io.on("connection", (socket) => {
socket.on("join-room", (roomId) => {
socket.join(roomId);
socket.broadcast.to(roomId).emit("user-connected");
});
});
λλ μ κΈ° broadcast μ μμΉλ₯Ό λ°κΆλλ λμλ€. (μ νλΈ κ³ λλ‘ λ°λΌνλ μλ¬ μκ²Όμ γ γ ‘γ )
π IDλ§ μ§μ ν΄μ£Όλ©΄ μμ½κ² P2P μ°κ²°μ μ²λ¦¬
π μ€ λ μ΄μμ μμκ² κΎΈλ―ΈκΈ°
π μ€μμ chat νκΈ°
무μ¨μΌμ΄μ§ μ λλ λκ° μλ ???
'π©βπ» λ°±μλ(Back-End) > Node js' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Markdown Blog] Node.js, Express λ° MongoDB (0) | 2023.06.22 |
---|---|
[Authentication in Node.js] Using Sessions & Cookies (0) | 2023.06.20 |
[Node js Project - 3] Create a Discord Bot (0) | 2023.06.17 |
[Node js Project - 2] Store Locator API (0) | 2023.06.17 |
[Node js Project - 1] Realtime Chat With Users & Rooms (0) | 2023.06.16 |