문제 원인
현재 프로젝트의 ChattingController에서 메시지를 전송할 때 발생하는 오류이다. 에러 메시지에서 SimpleMessageConverter는 String, byte[], 그리고 Serializable 형식의 페이로드만 지원한다고 나타나고 있으며, 전송된 객체가 ChatMessageRequestDto라는 DTO 클래스임을 알 수 있다.
원인 분석
ChattingController에서 ChatMessageRequestDto 객체를 전송하기 위해 STOMP 메시지 변환기가 SimpleMessageConverter로 설정되어 있을 가능성이 있다.
SimpleMessageConverter는 String, byte[], 또는 Serializable이 아닌 객체를 직렬화하여 전송할 수 없기 때문에, 복합 객체(예: DTO)를 전송할 때 MappingJackson2MessageConverter와 같은 JSON 변환기가 필요하다.
해결 방법
복합 객체를 JSON 형식으로 변환하여 전송하려면 MappingJackson2MessageConverter를 STOMP 메시지 변환기로 설정해야 한다. MappingJackson2MessageConverter는 Jackson 라이브러리를 사용하여 DTO 객체를 JSON으로 직렬화할 수 있다.
결론
위와 같은 설정을 통해 SimpleMessageConverter의 제한을 해결하고, 복합 객체를 JSON 형식으로 변환하여 STOMP를 통해 안전하게 전송할 수 있게 되었다. 이로써 ChatMessageRequestDto와 같은 DTO 객체를 메시지로 전송할 때 발생하는 오류를 방지할 수 있다.
'WebSocket > 트러블 슈팅' 카테고리의 다른 글
Websocket 권한문제 (1) | 2024.11.15 |
---|