반응형
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
반응형
'programing' 카테고리의 다른 글
| web.config 컴파일/assembly 요소는 무엇을 합니까? (0) | 2023.07.06 |
|---|---|
| [01000][unixODBC][드라이버 관리자]lib '/usr/local/easysoft/oracle/InstantClient112/lib/libsqora.so '을(를) 열 수 없음: 파일을 찾을 수 없습니다. (0) | 2023.07.06 |
| XML을 사용하여 사용자 정의 Android UI 요소 선언 (0) | 2023.07.06 |
| SQL에서 199.96 - 0 = 200인 이유는 무엇입니까? (0) | 2023.07.06 |
| 쿼리라는 JPA의 IN 절에서 동적 매개 변수를 사용하는 방법은 무엇입니까? (0) | 2023.07.06 |