본문 바로가기
웹 개발

34. Socket.IO를 활용한 웹소켓 채팅 및 ORM vs ODM 비교

by 곽정우 2024. 5. 8.

1. 환경 변수 관리

  • 로컬에서 개발 또는 서버에 배포할 때 db연결, 포트 설정, 시크릿 키 등 안전하게 관리하기 위한 환경 변수로 처리
  • .env라는 파일에 환경 변수를 설정
    npm i dotenv

 

2. HTTP 통신

  • 요청(request, 클라이언트)과 응답(reponse, 서버)으로 이루어짐
  • 클라이언트가 요청을 먼저하고 서버는 수동적으로 응답해주는 구조
  • 반이중통신

3. 웹소켓(Web Socket)

  • 브라우저에서 지원하는 소켓통신
  • 실시간 네트워킹이 보장
  • 전이중통신

웹소켓의 동작 원리

  1. 최초 연결 요청 시 클라이언트에서 HTTP를 통해 웹서버에 요청
    •     (핸드쉐이크, Handshake: Websocket 프로토콜로 전환)
  2. 연결이 수립되면 클라이언트와 서버 양측간의 데이터 통신 단계가 시작
    • 양방향 통신(전이중통신)
    • 상대방에서 ping 패킷을 보낼 수 있음, 수신한 측은 pong 패킷을 전송함
  3. 클라이언트 혹은 서버 양측 누구나 연결을 종료할 수 있음

웹소켓의 동작 원리

  • Node.js 기반의 웹소켓 라이브러리
  • 실시간 양방향 통신을 가능하게 해주는 도구
    npm i socket.io


socket.join(값): 해당 값에 속한 소켓 객체가 됨

    // 채널 설정
    socket.join(channel)  // 해당 채널의 속한 객체가 됨

    // 메세지 설정
    io.emit(); 모든 소켓 객체에게 이벤트를 발생
    io.to(channel).emit(): 해당 채널의 속한 객체에게만 이벤트를 발생

 

4. ORM(객체 관계 매핑, Object Relational Mapping)

  • 객체 지향 프로그래밍 언어에서 사용되는 객체와 관계형 데이터베이스 간의 불일치를 해결하기 위한 기술
  • 객체 모델과 관계형 데이터베이스의 테이블 간의 매핑을 수행하여 개발자가 SQL 쿼리 대신 객체 지향 코드를 사용할 수 있도록 함

5. ODM(객체 문서 매핑)

  • NOSQL 데이터베이스와 객체 지향 프로그래밍 언어 간의 매핑을 제공하는 기술
  • 주로 문서 지향 데이터베이스(MongoDB)와 함께 사용

'웹 개발' 카테고리의 다른 글

36. React란 및 설치  (0) 2024.05.13
35. Sequelize와 MongoDB  (0) 2024.05.09
33. Express 리팩토링 & 유효성 검증  (0) 2024.04.24
32. 자바스크립트 다양한 출력들8  (0) 2024.04.24
31. 자바스크립트 고급 정리4(node.js)  (0) 2024.04.24