SSE
특징
HTTP 통신으로 이루어진다.
서버에서 클라이언트로 푸시에 사용된다.
브로드캐스팅으로 모든 클라이언트에게 푸시된다. (클라이언트 UUID 나 세션정보 등을 통해 유니캐스트나 멀티캐스티 방식으로도 사용가능)
후기
웹소켓에 비해 비동기 통신 속도가 느렸다.
새로고침하면 이전 메시지를 다시 받을수 없다.
브라우저 종료, 새로고침 등에 따른 처리가 필요하다.
프로그램을 종료해도 포트가 열려있음 (타임아웃 시간인지 어떤 기준으로 인해 어느정도 시간지나면 포트도 닫음)
sub 연결이 타임아웃되면 pub 을 해도 메시지를 받을 수 없다.
기타 (확인하지 않았지만 이렇다고함)
content-type : application/event-stream
EventStream의 최대 개수는 HTTP/1.1 사용시 6개, HTTP/2 사용시 최대 100개까지 유지 가능하다.
ie 사용불가 (pollyfill 통해 사용가능)
접속문제가 잇을시 클라이언트에서 자동 연결을 재시도
결론
간단하게 SSE 가 어떻게 동작하는지 궁금해서 구현하고 잠깐 사용해보고 드는 생각을 작성해보았습니다.
다소 부정확 내용이 있을 수 있어 사용하실때 다시 확인해보시는것이 좋습니다.
Websocket
특징
1. 프로그램 종료해도 port 가 살아잇음
- 아마 여러 클라이언트에서 접속시 그랬던거 같음
- 웹소켓 연결종료 하면 됨
- 프로그램종료하면 자동 웹소켓 연결종료 됨
2. 개발자도구에서 주고받은 메시지 기록을 볼수있다.
3. 기본적으로 ServerEndPoint 어노테이션으로 인해 Bean 생성이 불가 (해도 null 로 초기화됨)
4. 신규 클라이언트가 연결되어도 이전 기록은 받지 못한다.
5. 최초 접속시 http request 를 통해 핸드쉐이킹을 과정이 있고, http request 를 그대로 사용하여 동일한 포트사용
- CORS 적용, 인증 등을 http 와 동일하게 사용할 수 있다
구현방식
1. 톰켓 기반
2. 스프링 기반
3. sockjs, stomp, socketio 차이는 미지원 브라우저나 언어를 커버하기 위해 많이 사용된 라이브러리이다.
'IT > 네트워크' 카테고리의 다른 글
NFS 주요 옵션 (0) | 2022.12.19 |
---|---|
HTTP MIME 타입 정리 (0) | 2021.07.14 |
스프링부트 웹소켓 리뷰 (0) | 2021.06.28 |
SSH 와 TLS/SSL 란? (0) | 2021.05.09 |
파일 송수신 (HTTP, FTP, SFTP, FTPS) 비교 (0) | 2021.05.09 |