[study] websocket

hong·2022년 4월 11일

조사

목록 보기
5/14

websocket

개념

  1. Stateful protocol
  2. HTTP프로토콜을 통해 이루어짐(일정 시간이 지나면 HTTP연결은 자동으로 끊어짐)
  3. 장시간 접속을 전제로 함
  4. SockJS나 Socket.IO
  5. STOMP : 채팅 통신을 하기 위한 형식을 정의
  6. 비정상적으로 연결이 끊어졌을 때 적절히 대처해야 함
  7. 연결되면 http에서 WS로 프로토콜이 변경
  8. 웹 소켓 연결은 주로 새로고침이나 창 닫기 등의 이벤트 발생 시 닫힘
  9. 초기 연결 수립을 위한 오직 하나의 URL만 존재
  10. 스레드에서 동작

과정

  1. 브라우저 👉 서버 : 매직키 전달, websocket 연결 요청 (http) (Hand Shaking)
  2. 서버 👉 브라우저 : websocket준비, 연결 (http) (Hand Shaking)
  3. 브라우저 👉 서버 , 서버 👉 브라우저 : 데이터 교환 (websocket)
  4. 브라우저 👉 서버 : 연결 종료 (websocket)

client

  1. 반드시 get 방식으로 요청
  2. StringMessageConverter, SimpleMessageConverter 등 여러 MessageConverter 구현체가 있음

참고
https://duckdevelope.tistory.com/19
https://choseongho93.tistory.com/266
https://kyleyj.tistory.com/59
https://tecoble.techcourse.co.kr/post/2021-08-14-web-socket/ (예제 있음)
https://tecoble.techcourse.co.kr/post/2021-11-10-web-socket-test/ (테스트 코드)
https://spring.io/guides/gs/messaging-stomp-websocket/ (user guide)
서버 타임아웃 https://jjongwoo.tistory.com/47
https://github.com/sockjs/sockjs-node/blob/main/examples/haproxy.cfg
https://docs.aws.amazon.com/elasticloadbalancing/latest/application/application-load-balancers.html#connection-idle-timeout
https://stackoverflow.com/questions/35256674/java-how-to-set-timeout-on-client-socket-connection-and-disconnect-idle-users

profile
프론트엔드 개발을 하고 있습니다 ⌨️

0개의 댓글