코딩굼벵이
구르는 중
코딩굼벵이
  • 분류 전체보기 (116)
    • [C_C++]이론 공부 (17)
      • 알고리즘 (11)
      • 이론+STL (6)
    • [C_C++]코딩테스트 연습 (45)
      • [프로그래머스] level 1 (26)
      • [프로그래머스] level 2 (5)
      • [백준] 일반 문제 (12)
      • 기타 (2)
    • Solana (28)
      • Documentation (9)
      • Validator - 공부 (10)
      • Validator - 실행 (devnet & te.. (6)
      • 그 외 (3)
    • React (4)
    • Linux (2)
    • Javascript (2)
    • 블록체인 기반 핀테크 및 응용 SW 개발 (8)
      • React (1)
      • Javascript (3)
      • Solidity (3)
      • 프로젝트 (1)
    • 기타 (10)

블로그 메뉴

  • 🌟 깃허브
  • 🌿 Portfolio(2021)
  • 홈
  • 태그
  • 방명록

티스토리

최근 글

태그

  • Immer #ContextAPI
  • 모니터링
  • 밸리데이터
  • 솔라나
  • Hooks #React
  • grafana

인기 글

전체 방문자
오늘
어제
hELLO · Designed By 정상우.
코딩굼벵이

구르는 중

기타

websocket과 socket.io 의 차이

2022. 6. 22. 16:25
728x90

websocket : 양방향 소통을 위한 프로토콜. 즉, 다른 컴퓨터와 소통하기 위한 규약

- HTML5 웹 표준 기술. 그래서 클라이언트 측에서는 따로 모듈 설치할 필요 X
- 매우 빠르게 작동. 통신할 때 아주 적은 데이터 이용
- 이벤트의 단순 송수신만 가능. broadcasting 하려면 클라이언트.send(데이터) 를 for문에 돌려야 함.
- 연결이 끊어져도 연결을 재시도하지 않음. 연결을 복구하려면 추가로 코드 구성해야 함
- string 자료형 하나로 데이터를 주고 받음. 이벤트명도 데이터에 포함해서 받기 때문에 데이터를 parsing하는 작업(JSON.parse, JSON.stringify)이 필요함. NestJS에서는 event로 이벤트명 지정, data로 데이터명 지정하는 규약이 있음

=> 데이터 전송이 많은 경우(ex. 가상화폐 거래소), 빠르고 비용이 적은 표준 Websocket 사용하는게 유리.

socket.io : 양방향 통신을 위해 웹소켓 기술을 활용하는 라이브러리. Java, C++, Python 등 타 언어 라이브러리도 지원

- 라이브러리(표준기술 X)
- 소켓 연결 실패 시 fallback을 통해 알아서 다른 방식으로 클라이언트와 연결 시도
- Room 개념을 이용해 일부 클라이언트에게만 데이터를 전송하는 broadcasting 가능
- 연결이 끊어지면 주기적으로 연결을 시도함
- to, of 와 같이 특정 클라이언트를 지정하는 기능이 있음
! socket.io 로 구성된 서버에 소켓 연결을 하기 위해서는 클라이언트 측에서 socket.io-client 라이브러리를 사용해야 함

=> 서버에서 연결된 소켓(user)들을 세밀하게 관리해야하는 서비스인 경우, broadcasting 기능이 있는 socket.io를 사용하는게 유리.

 

 

참고 블로그: https://www.peterkimzz.com/websocket-vs-socket-io/

 

웹소켓과 socket.io - peterkimzz

예전에 회사 프로젝트를 진행할 때, 지도에 실시간으로 사용자의 위치를 보여주는 기능이 필요해서 socket.io 를 사용해서 구현했던 적이 있습니다. 여태까지 저는 그냥 무지성으로 실시간이면 무

www.peterkimzz.com

 

함께 보면 좋을 블로그:

https://velog.io/@jguuun/Socketio-WS-diff

https://basemenks.tistory.com/253

저작자표시 비영리 변경금지 (새창열림)

'기타' 카테고리의 다른 글

[Javascript] 비동기 처리, Promise, async/await  (0) 2022.07.13
SQL과 NoSQL의 차이, 장단점  (0) 2022.06.23
[Sourcetree] Bitbucket 협업 시 충돌 병합(Conflict Merge) 해결 방법  (0) 2022.06.07
Cognito 참고 자료  (0) 2022.04.26
[Sourcetree] github 토큰 인증 로그인 방법 : sourcetree Support for password authentication was removed on August 13, 2021. Please use a personal access token instead.  (0) 2021.08.19
    '기타' 카테고리의 다른 글
    • [Javascript] 비동기 처리, Promise, async/await
    • SQL과 NoSQL의 차이, 장단점
    • [Sourcetree] Bitbucket 협업 시 충돌 병합(Conflict Merge) 해결 방법
    • Cognito 참고 자료
    코딩굼벵이
    코딩굼벵이
    구르는 재주 연마 중

    티스토리툴바