Frontend/Javascript

WebRTC - ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ… APP ๋งŒ๋“ค๊ธฐ (4)

rachel_13 2023. 4. 13. 23:30

๐Ÿ”– WebSocekt( )
๋งํฌ : https://developer.mozilla.org/ko/docs/Web/API/WebSocket
์›น์†Œ์ผ“ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ
Ex) const socket =newWebSocket('ws://localhost:8080');
์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์ข…๋ฅ˜ : connection, close, error, headers, listening

๊ทธ ์ค‘ connection์„ ์‚ฌ์šฉํ•  ๊ฑด๋ฐ, ์—ฐ๊ฒฐ ๋˜์—ˆ์œผ๋ฉด, ์–ด๋–ค ์ด๋ฒคํŠธ๋ฅผ ์‹คํ–‰ํ•ด~ ์™€ ๊ฐ™์€ ์˜๋ฏธ์ด๋‹ค.

์ด ๋ฉ”์„œ๋“œ๋Š” ์ฝœ๋ฐฑ์œผ๋กœ socket์„ ๋ฐ›๋Š”๋ฐ, ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๋ธŒ๋ผ์šฐ์ €์— ์—ฐ๊ฒฐ๋œ ๊ฑด๋„ˆํŽธ์˜ ๋ˆ„๊ตฐ๊ฐ€์ด๋‹ค.

socket์„ ์ด์šฉํ•˜๋ฉด ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

ํ”„๋ก ํŠธ ๋‹จ (app.js)์—์„œ๋„ socket์„ ์ •์˜, ๋ฐฑ ๋‹จ(server.js)์—์„œ๋„ socket์„ ์ •์˜ํ•จ์œผ๋กœ์„œ ๋ฐฑ์—”๋“œ๋กœ๋ถ€ํ„ฐ ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ํ”„๋ก ํŠธ์—์„œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

  • server.js ์˜ socket : ์—ฐ๊ฒฐ๋œ ๋ธŒ๋ผ์šฐ์ €
  • app.js์˜ socket : ์„œ๋ฒ„๋กœ์˜ ์—ฐ๊ฒฐ

 

server.js - ๋ฐฑ์—”๋“œ์—์„œ์˜ socket

const server = http.createServer(app); //http server
const wss = new WebSocketServer({ server }); //websocket server + http server

wss.on("connection", (socket) => {
  socket.send("hello");
});
 

connection์ด ์ƒ๊ฒผ์„ ๋•Œ, socket์œผ๋กœ ์ฆ‰์‹œ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ธ๋‹ค. (socket.send)

 

app.js - ํ”„๋ก ํŠธ์—”๋“œ์—์„œ์˜ socket

const clientSocket = new WebSocket(`ws://${window.location.host}`);
//(1)
clientSocket.addEventListener("open", () => {
  console.log("Connected to Server");
});
//(2)
clientSocket.addEventListener("message", (message) => {
  console.log("Just Got This : ", message, "from the Server");
});
//(3)
clientSocket.addEventListener("close", () => {
  console.log("Disconnected from Server");
});
 

(1) connection์ด "open"๋˜๋ฉด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ด๋ฒคํŠธ

(2) "message"๋ฅผ ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•˜๋Š” ์ด๋ฒคํŠธ

(3) ์„œ๋ฒ„๊ฐ€ ์˜คํ”„๋ผ์ธ์ด ๋  ๋•Œ("close"๋  ๋•Œ) ์‹คํ–‰๋˜๋Š” ์ด๋ฒคํŠธ