개발자

스프링부트에서 소켓통신

2023년 05월 09일조회 321

안녕하세요 스프링부트로 작업하던 중 어려움이 있어 여쭙습니다. 상황은 이렇습니다. 소켓통신을 하는 서버가 있습니다. 이 서버는 간단한 파이썬 코드로 작성되어 있구요~ 받은 메시지를 돌려주는 역할을 합니다. 스프링부트는 비즈니스 로직을 처리하고 프론트에서 받은 액션에 따라 동작합니다. 상황에 따라 소켓으로 메시지를 보내야 합니다. 문제는 이렇습니다. 클라이언트가 소켓연결을 끊지 않고 항상 연결되어 있어야 합니다. 로그인 후 사용하는 동안은 연결되어 있어야 합니다. 그런데 어떻게 항상 연결 시켜야 하는지 감도 잡히지 않네요... 간단히 루프를 돌려서 연결을 유지하는건 알겠는데 이미 짜여진 비즈니스 로직은 또 따로 동작하고 있어야 합니다. 개념적인 부분이 전혀 정리가 되지 않아 난해 합니다. 실은 지금 제대로 된 질문을 하고 있는 건지도 의심스럽습니다. 선배님들의 해안으로 많은 조언 부탁드립니다. 감사합니다.

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.
profile picture
익명님의 질문

답변 1

커리어리 AI 봇님의 프로필 사진

안녕하세요! 스프링 부트에서 소켓 통신을 구현하는 방법에 대해 알려드릴게요. 1. WebSocket 사용: 스프링 부트에서는 WebSocket을 사용하여 실시간 통신을 구현할 수 있습니다. WebSocket은 지속적인 양방향 통신을 제공하며, 클라이언트와 서버 간의 상호작용이 가능합니다. WebSocket을 사용하면 클라이언트와 서버가 연결을 유지하고 메시지를 주고받을 수 있습니다. 2. @EnableWebSocketMessageBroker 설정: 스프링 부트에서는 '@EnableWebSocketMessageBroker' 어노테이션을 사용하여 WebSocket을 설정할 수 있습니다. 해당 어노테이션을 사용하면 WebSocket 메시지 브로커가 활성화되어 클라이언트와의 통신을 처리할 수 있습니다. 3. @MessageMapping과 @SendTo 어노테이션: 클라이언트로부터 메시지를 받을 때는 '@MessageMapping' 어노테이션을 사용하여 해당 요청을 처리할 핸들러 메서드를 정의합니다. 그리고 '@SendTo' 어노테이션을 사용하여 메시지를 연결된 클라이언트로 보낼 수 있습니다. 4. Session 유지: WebSocket을 사용하면 클라이언트와 서버 사이에 지속적인 연결을 유지할 수 있습니다. 클라이언트가 로그인한 후에도 WebSocket 세션을 유지하고, 연결이 끊어지지 않도록 합니다. 5. 비즈니스 로직 처리: WebSocket과 비즈니스 로직을 동시에 처리해야 한다면, 적절한 방식으로 비즈니스 로직을 구현하고 WebSocket 통신을 통해 클라이언트에게 결과를 전달합니다. 필요한 경우 스레드나 비동기 처리를 활용하여 비즈니스 로직을 동시에 실행할 수 있습니다. 위의 방법들을 활용하여 스프링 부트에서 소켓 통신을 구현해보세요. 비즈니스 로직과 소켓 통신이 동시에 처리되도록 설계하고 구현해야합니다. 필요에 따라 스레드, 비동기 처리, 이벤트 기반 구조 등을 고려하여 구현하시면 됩니다.

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!