programing

Spring Web-Socket을 통해 클라이언트에 정기적으로 메시지 보내기

itmemos 2023. 7. 6. 21:51
반응형

Spring Web-Socket을 통해 클라이언트에 정기적으로 메시지 보내기

저는 Spring webSocket을 통해 클라이언트와 서버 간의 연결을 시도하고 있으며 이 링크를 통해 이 작업을 수행하고 있습니다.컨트롤러가 5초마다 클라이언트에게 "안녕"을 보내고 클라이언트가 매번 인사말 상자에 추가하기를 원합니다.다음은 컨트롤러 클래스입니다.

@EnableScheduling
@Controller
public class GreetingController {

    @Scheduled(fixedRate = 5000)
    @MessageMapping("/hello")
    @SendTo("/topic/greetings")
    public Greeting greeting() throws Exception {
        Thread.sleep(1000); // simulated delay
        System.out.println("scheduled");
        return new Greeting("Hello");
    }

}

그리고 이것은 app.jsp:의 Connect() 함수입니다.

function connect() {
    var socket = new SockJS('/gs-guide-websocket');
    stompClient = Stomp.over(socket);
    stompClient.connect({}, function (frame) {
        setConnected(true);
        console.log('Connected: ' + frame);
        stompClient.send("/app/hello", {}, JSON.stringify({'name': "connect"}));
        stompClient.subscribe('/topic/greetings', function (message) {
            console.log("message"+message);
             console.log("message"+(JSON.parse(message.body)));

            showGreeting(JSON.parse(message.body).content);
        });
    });
}

index.jsp가 로드되고 연결 버튼을 누르면 인사말에 hello가 한 번만 표시되는데, 클라이언트가 5초마다 "hello" 메시지를 표시하도록 하려면 어떻게 해야 합니까?

설명서의 이 부분을 참조하십시오.당신이 메시지를 보내려는 방식이 완전히 틀렸습니다.위의 수업을 다음과 같이 수정하겠습니다.

@EnableScheduling
@Controller
public class GreetingController {

    @Autowired
    private SimpMessagingTemplate template;

    @Scheduled(fixedRate = 5000)
    public void greeting() {
        Thread.sleep(1000); // simulated delay
        System.out.println("scheduled");
        this.template.convertAndSend("/topic/greetings", "Hello");
    }

}

언급URL : https://stackoverflow.com/questions/42207513/sending-message-to-client-periodically-via-spring-web-socket

반응형