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

+ Recent posts