Próbuję utworzyć połączenie między klientem a serwerem za pośrednictwem Spring webSocket i robię to za pomocą this link. Chcę, aby kontroler wysyłał "cześć" do klienta co 5 sekund, a klient dołączał go do skrzynki z życzeniami za każdym razem. Jest to klasa kontrolera:Wysyłanie wiadomości do klienta okresowo przez 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");
}
}
i to Połącz function() w app.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);
});
});
}
po załadowaniu index.jsp i naciśnięciu przycisku Connect, tylko jeden raz go witam się na powitanie, jak mam sprawić, by klient wyświetlał komunikat "cześć" co 5 sekund?
Wiadomość "Zaplanowano" jest widoczna? Mam na myśli zapowiedź zaplanowana? – cralfaro
Tak, działa @cralfaro – user5621266
Myślę, że problem polega na tym, co próbujesz zrobić, nie ma sensu, mam na myśli komunikat, że musisz myśleć w nim jako dyspozytor, kiedy ktoś wysyła wiadomość do konkretnego tematu transmisja do wszystkich słuchaczy, ale dodanie Harmonogramu w rzeczywistości nikt nie wysyła prawdziwej wiadomości. Proponuję usunąć zaplanowaną adnotację i zrobić to samo z jakiegoś fałszywego html z pewną funkcją setTimeout() JS i połączyć się z tematem i wysłać wiadomość, a zobaczysz wiadomość na twojej drugiej stronie html. – cralfaro