새싹🌱

0907 Socket.io

idleday 2022. 9. 7. 22:10

소켓(Socket)

프로세스네트워크로 데이터 내보내거나 받기위한 실제적인 창구역할을 하는것

서버와 클라이언트를 연결해주는 도구, 인터페이스 역할

  • 프로토콜
  • IP주소
  • 포트 넘버

소켓 흐름

서버

클라이언 소켓의 연결요청을 대기하고, 연결요청이 오면 클라이언트 소켓을 생성통신을 가능하게 함

  • socket() Socket 생성
  • bind() ip와 port 번호 설정
  • listen() 클라이언트 요청connect()에 수신 대기열 생성

  • accept()
    • 클라이언트 연결read()을 기다림

클라이언트

실제로 데이터 송수신이 일어나는 곳

  • socket() Socket 여는 함수
  • connect()
    • 통신할 서버의 설정된 ip와 port 번호에 통신을 시도하는 함수

  • 통신 시도 시, 서버가 accept() 통해 클라이언트의 socket descriptor 반환
  • 이를 통해 클라이언트와 서버가 서로 read() write() 만 반복하며 통신

Socket.io

소켓도 여러가지 개념이 있음. nodejs에서 서버를 쓸 때 express쓸지 http를 쓸지 정하는것처럼.

⇒ 많은 작업을 한다면 다른 라이브러리를 사용해야함.

WebSocket

양방향 소통을 위한 프로토콜(약속)

  • HTML5 웹 표준 기술
  • 빠른 작동, 통신시 적은 데이터 이용
  • 프로토콜에 맞춰 단순히 이벤트 듣고 보내는 것만 가능

웹소켓 → 매번 콘솔로그 찍힘

Socket.io

실시간 양방향 통신을 위한
웹소켓 기반 JS라이브러리

  • 표준기술 X
  • 통신 서버 소켓 - 클라 소켓 연결
  • 이벤트 기반
  • 방 개념
    • 방 : 연결시 클라이언트 다 기록
    • 일부 클라에게만 데이터 전송하는 브로드캐스팅 가능

socket.id 소켓 객체의 id값

'새싹🌱' 카테고리의 다른 글

[JAVA] RequestMapping Handler Method  (0) 2022.11.16
221109 JAVA 입문  (0) 2022.11.09
0905 CSS 반응형  (0) 2022.09.05
[TIL] 220724  (0) 2022.07.24
0718 10회차  (0) 2022.07.18