728x90
반응형
SMALL
WebSocketSession 을 사용 token을 사용하는 방법 다시 찾아보기!
build.gradle
// websocket, stomp
implementation 'org.springframework.boot:spring-boot-starter-websocket'
implementation 'org.webjars:stomp-websocket:2.3.3'
implementation 'org.webjars:webjars-locator-core'
implementation 'org.webjars:sockjs-client:1.0.2'
implementation 'org.webjars:bootstrap:3.3.7'
implementation 'org.webjars:jquery:3.1.1-1'
WebSocketConfig
package com.ddalggak.finalproject.global.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;
import com.ddalggak.finalproject.global.handler.SocketHandler;
import lombok.RequiredArgsConstructor;
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new SocketHandler(), "/socket").setAllowedOrigins("*");
}
}
SocketHandler
package com.ddalggak.finalproject.global.handler;
import java.util.ArrayList;
import java.util.List;
import org.springframework.web.socket.CloseStatus;
import org.springframework.web.socket.TextMessage;
import org.springframework.web.socket.WebSocketSession;
import org.springframework.web.socket.handler.TextWebSocketHandler;
public class SocketHandler extends TextWebSocketHandler {
private List<WebSocketSession> sessions = new ArrayList<>();
// WebSocketSession 저장
@Override
public void afterConnectionEstablished(WebSocketSession session) throws Exception {
sessions.add(session);
}
// WebSocketSession 삭제
public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception {
sessions.remove(session);
}
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
String payload = message.getPayload();
session.sendMessage(new TextMessage("알림 메세지"));
}
}
기본 설정 끝
알람이 필요한 부분에 코드 추가
private SimpMessagingTemplate simpMessagingTemplate;
// 리뷰 등록
@Transactional
public ResponseEntity<?> createReview(User user, ReviewRequestDto reviewRequestDto) {
validateUserByEmail(user.getEmail());
Ticket ticket = validateTicket(reviewRequestDto.getTicketId());
Review review = Review.create(reviewRequestDto, ticket);
reviewRepository.save(review);
simpMessagingTemplate.convertAndSend("/topic/mewReview", review);
return SuccessResponseDto.toResponseEntity(SuccessCode.CREATED_SUCCESSFULLY);
}
we://localhost:8080/topic/mewReview 로 확인!
728x90
반응형
LIST
'개발 > Spring' 카테고리의 다른 글
웹소캣 1:1 채팅방 (수정전) (0) | 2023.04.09 |
---|---|
웹소캣 - 채팅 기본 구현 (테스트 코드 연습) (0) | 2023.04.09 |
yml 파일이란 ? (0) | 2023.03.12 |
WebSock 구현 (0) | 2023.03.07 |
JWT 장점과 단점 (0) | 2023.02.15 |