L'envoi de message au client périodiquement via Spring Web-Socket
Je suis en train de faire une connexion entre le client et le serveur via le Printemps webSocket et je fais cela à l'aide de ce lien.
Je veux Contrôleur pour envoyer un "bonjour" au client toutes les 5 secondes et le client l'ajouter à la salutation de la boîte de tous les temps.
C'est la classe de contrôleur:
@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");
}
}
et C'est Connect() la fonction in-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);
});
});
}
lors de l'index.jsp charges et j'appuie sur le bouton de connexion, une seule fois, il appnds bonjour en guise de salutation, comment dois-je faire client pour afficher de message "hello" toutes les 5 secondes?
Le message "Prévu" est-elle visible? Je veux dire la date Prévue de l'annotation de travail?
Je pense que le problème c'est que vous essayez de faire ne faites pas le sens, je veux dire la messageMapping vous avez besoin de penser à elle en tant que dispatcher, quand quelqu'un envoie un message vocal pour le sujet particulier de la faire une diffusion à tous les auditeurs, mais en ajoutant à l'Horaire en réalité, personne n'est à l'envoi d'un message. Je vous propose de supprimer la date Prévue de l'annotation et de faire la même chose de certains mannequin html avec quelques setTimeout() en JS fonction et de se connecter à la rubrique et envoyer quelques messages, puis vous verrez le message dans votre page html.
Je pense que le problème c'est que vous essayez de faire ne faites pas le sens, je veux dire la messageMapping vous avez besoin de penser à elle en tant que dispatcher, quand quelqu'un envoie un message vocal pour le sujet particulier de la faire une diffusion à tous les auditeurs, mais en ajoutant à l'Horaire en réalité, personne n'est à l'envoi d'un message. Je vous propose de supprimer la date Prévue de l'annotation et de faire la même chose de certains mannequin html avec quelques setTimeout() en JS fonction et de se connecter à la rubrique et envoyer quelques messages, puis vous verrez le message dans votre page html.
OriginalL'auteur user5621266 | 2017-02-13
Vous devez vous connecter pour publier un commentaire.
Veuillez appellent cette partie de la la documentation.
La façon dont vous essayez d'envoyer un message qui est totalement faux.
Je voudrais modifier votre classe ci-dessus comme suit:
En utilisant @SendTo, la méthode ne pourra publier le message à ce sujet lorsque la méthode est appelée en tant que gestionnaire de messages (c'est quand le message est venu de la websocket lui-même). Si vous souhaitez que le conteneur pour appeler la méthode, toutes les 5 secondes et d'obtenir les messages publiés sur le sujet, vous aurez à utiliser la messagerie modèle. Il n'y a pas moyen de contourner cela.
Ahh désolé de ne pas vous voir supprimer certaines annotations, oui cette méthode, je pense aussi pourrait fonctionner
OriginalL'auteur Andrei Balici