[Spring WebSocket] Spring Security + STOMP
·
Spring/WebSocket
채팅 토이 프로젝트를 진행하면서 사용자 인증/인가를 위해 `Spring Security`도 사용을 하였다. 하지만, 채팅 서비스는 `WebSocket` 위에서 동작하기에커넥션이 맺어진 이후에는 `Security Filter`를 타지 않는다. 따라서, 이와 관련해서 `JWT` 검증을 다르게 동작시켜야만 한다.   우선, `Spring Security`를 이용해 `WebSocket` 연결을 보호할 때, 인증 및 인가가 이루어지는 순서를 살펴보자. 이 과정에서는 `HandShake`와 `WebSocket` 통신 두 가지 주요 단계가 있다. 각 단계에서 `Spring Security` 필터와 `ChanneInterceptor`가 어떻게 작동할까?  1. Handshake 단계`Handshake` 단계는 `TCP..
[Spring WebSocket] STOMP를 활용한 채팅 서비스 토이 프로젝트
·
Spring/WebSocket
`WebSocket`, `SockJS`, `STOMP`를 학습하고 직접 실습해보는 프로젝트를 구상을 했다.개념을 학습하는 것과 직접 코드로 구현하는 것은 완전히 다른 영역이기에 실습해보는 것이 중요하다고 생각한다.  사용 예정 기술 스택 개발 언어 선정개발 언어로는 Java를 선택했다.`Kotlin`도 학습하면 좋겠지만, 제작할 채팅 서비스는개념 학습 후 실습에 가까운 프로젝트이기에 아직 잘 모르는 `Kotlin`을 적용하기에는너무 큰 Learning Curve가 될 것 같았기 때문이다. Framework 선정채팅 서비스를 제작하기 위해서는 당연히 Spring Framework를 활용했다.(다른 Framework를 사용해본적도 없으며 개념 학습을 Spring 기반으로 했다.)  DB 선정DB 선정에 있어..
[Spring WebSocket] WebSocket
·
Spring/WebSocket
WebSocket 이란?`WebSocket` 프로토콜은 표준 된 방법으로 `서버-클라이언트` 간에 단일 TCP 커넥션을 이용해서양방향 통신을 제공한다. 특징기존의 다른 TCP 기반의 프로토콜과 다르게,`WebSocket`은 HTTP 요청 기반으로 WebSocket HandShake 과정을 거쳐 커넥션을 생성한다.(기존의 TCP 3-way Handshake와는 달리 HTTP 요청을 활용해 연결을 시작한 후, 연결이 확립되면 TCP로 전환) 덕분에, 초기 WebSocket HandShake 요청은 추가적인 방화벽 설정 없이 80, 443 포트를 사용하여양방향 통신이 가능하다. 또한 HTTP 규격 그대로 유지할 수 있기 때문에 HTTP 인증, CORS 등을 동일하게 적용할 수 있다는 장점이 있다.  커넥션 F..
[Spring WebSocket] SSE vs WebSocket
·
Spring/WebSocket
SSE와 WebSocket, 그들은 왜 실시간 통신 환경에서 자주 비교될까?우리가 알림과 실시간 채팅 같은 서비스를 구현할 때, 우리는 자연스럽게 두 가지 기술 사이에서 고민한다.`SSE`와 `WebSocket`은 각기 다른 매력을 가졌다.  실시간 통신의 필요성앞서, 언급한 것처럼 알림을 띄우거나 실시간 채팅 서비스에서 실시간 통신은 선택이 아닌 필수이다. 그런데 문제는 단방향이냐, 양방향이냐가 된다.  양방향 통신을 택하면 더 복잡하지만 매력적이고, 단방향 통신은 기능은 적지만 그만큼 단순하다.둘 중 어느 쪽을 고를지를 결정하기 위해서는 기술들의 성격을 좀 더 들여다 봐야 한다.  SSE (Server-Sent Events)`SSE`는 마치 인프런 강의처럼 강사가 우리에게 일방적으로 강의를 하는 것과..