일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- cs지식
- 자바문법
- 소켓
- 스프링
- 운영체제
- 채팅구현
- Mock
- Stomp
- 기술면접
- 스프링부트
- jwt토큰
- 테스트코드
- springboot
- OS
- spring
- socket
- 단위테스트
- rabbitmq
- Security
- 소켓통신
- jwt
- JPA
- java
- 자바
- 반효경
- CS
- 스프링소켓통신
- 스프링시큐리티
- MongoDB
- CS면접
- Today
- Total
목록소켓 (3)
Dev_Henry
spring을 이용한 캡스톤 프로젝트 진행 중 요구사항 중 채팅 기능이 있었다. 이를 구현하기 위해 spring에서 webSocket과 stomp를 사용해 구현했다. 이때 기본 내장 브로커는 안정성, 확장성 측면에서 단점이 많아 외부 브로커를 도입했다. (장애 발생시 메시지 유실, 수용가능한 세션 크기 제한, 모니터링이 어려움, 서버 분리,확장이 안됨) 찾아보니 많이 사용하는 것들이 아래의 3개이기 때문에 각각의 특징을 알아보려고 한다. 우선 아래의 세가지 모두 비동기 메시지를 사용하는 서비스들 사이에서 데이터 송수신을 의미하는 MOM(메시지 지향 미들웨어)를 구현한 메시지큐이다. 메시지 큐의 특징으로는 큐를 사용한 비동기 처리 어플리케이션과의 분리 실패에도 전체에 영향을 주지 않음 여러 프로세스가 큐에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WyowA/btsove2gTjC/eenk6iEjTrJlM5gbz5eUGk/img.jpg)
이전 글에서 사용한 방식은 세션을 직접 관리,처리 해주어야했다. 하지만 스프링에서는 웹소켓에 STOMP를 함께 사용할 수 있는 방법을 지원해주는데, 이를 사용하면 메시지처리를 직접하지 않고 편리하게 통신을 구현할 수 있다. STOMP란 Simple Text Oriented Messaging Protocol의 약자로 쉽게 메시지를 주고 받을 수 있게 하기 위한 프로토콜이다. pub/sub 기반으로 작동하며 웹소켓만을 위한 것은 아니나 웹소켓 위에 얹어 편리하게 메시지전송을 구현할수있다. pub/sub 을 간단하게 예로들면 클라이언트들은 특정 주소(채팅방)를 구독할 수 있고, 메시지를 보낸다면 메시지브로커가 해당 주소를 구독하는 모든 클라이언트들에게 메시지를 보여주는 방식이다. stomp를 사용해 통신을 구..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjF0BK/btsov5Kde0p/xpxwt2abcGwU2Ykz04sTek/img.png)
스프링에서 지원하는 웹소켓을 사용하기 위해서는 아래 라이브러리를 사용한다. implementation 'org.springframework.boot:spring-boot-starter-websocket' 소켓통신을 이용하여 채팅을 구현하는 방법을 찾아보면 크게 2가지 방식이 있는데 이번 글에서는 WebSocketConfigurer을 구현하여 소켓을 직접 처리하는 방법을 다룬다. 먼저 소켓 사용을 위한 설정파일을 만든다. 해당방법은 직접 소켓처리를 하는방법이기 때문에 핸들러를 등록해야한다. 핸들러를 등록할때 소켓에 접속하기위한 경로 ("/ws")를 함께 설정해주고, 다른곳에서 접속이 가능하도록 .setAllowedOrigins("*")을 붙여 cors문제를 해결한다. @RequiredArgsConstruc..