Spring webSocket을 통해 클라이언트와 서버를 연결하려고하는데이 작업은 this link의 도움으로 수행합니다. 컨트롤러에서 매 5 초마다 "hello"를 보내고 클라이언트가 매번 인사말 상자에 추가하도록합니다. 이 컨트롤러 클래스 :Spring Web-Socket을 통해 클라이언트에 주기적으로 메시지 보내기
@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에 연결() 함수 다음 index.jsp를로드 내가 한 번만를 연결 버튼을 누르면
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);
});
});
}
인사말에 안녕하세요, 5 초마다 "안녕하세요"라는 메시지를 표시하려면 어떻게해야합니까?
"예약 됨"메시지가 표시됩니까? 예약 된 주석이 작동 중입니까? – cralfaro
네, 작동하고 있습니다 @cralfaro – user5621266
제가 생각하기에 문제는, 당신이하려고하는 것은 이해가되지 않습니다. 나는 메시지를 의미합니다. 디스패처로 생각해야합니다. 누군가가 특정 주제에 메시지를 보낼 때 말입니다. 모든 청취자에게 방송하지만 실제로 아무도 실제 메시지를 보내지 않습니다. Scheduled annotation을 삭제하고 일부 dummyHTML에서 동일한 setTimeout() JS 함수를 사용하여 같은 작업을 수행하고 주제에 연결하고 메시지를 보내면 다른 HTML 페이지에 메시지가 표시됩니다. – cralfaro