Printemps 4 STOMP Websockets battement de coeur
Je n'arrive pas à trouver une bonne ressource sur la manière d'envoyer les battements de cœur des clients en utilisant les websockets au Printemps!
J'ai un serveur de base en cours en utilisant cette configuration:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/room");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/channels").withSockJS();
}
}
Puis-je utiliser quelque chose comme cela pour envoyer des messages à des personnes qui ont souscrit à une chambre:
this.simpMessagingTemplate.convertAndSend("/room/" + this.roomId, message);
C'est le code du client utilisé pour communiquer avec le serveur:
this.connect = function (roomNameParam, connectionCallback) {
var socket = new SockJS('http://localhost:8080/channels'),
self.stompClient = Stomp.over(socket);
self.stompClient.connect({}, function (frame) {
self.stompClient.subscribe('/room/' + roomNameParam, connectionCallback);
});
};
J'ai vraiment envie de mettre en œuvre des battements de coeur, afin que le client sait qui est connecté et pour envoyer des données de garder le client et le serveur de synchronisation.
Dois-je le faire manuellement?
OriginalL'auteur Dolan | 2015-03-03
Vous devez vous connecter pour publier un commentaire.
Le Printemps SockJS de configuration contient les paramètres pour envoyer des battements de cœur. Par défaut, un battement de coeur est envoyé toutes les 25 secondes, en supposant qu'aucun autre les messages sont envoyés sur la connexion. Voir le Printemps de référence pour plus de détails.
il envoie une pulsation cadre (
h
) sur la connexion websocket (entre le navigateur et le serveur). Le rythme cardiaque est envoyé uniquement si aucune donnée n'est envoyée sur un intervalle donné (par défaut 25 sec). Il est envoyé automatiquement, pourquoi avez-vous besoin de le détecter sur le serveur?Parce que je voudrais savoir combien de personnes sont connectés au serveur. Donc, je veux cœur bat à réellement m'informer sur les détails de personnes qui sont connectés si cela fait sens. Est-ce possible avec le Printemps/STOMP?
vous avez autant de clients connectés au serveur en tant que websocket les connexions que vous avez. Vous pouvez utiliser quelque chose comme un global
AtomicInteger
de garder une trace des connexions. Lorsqu'une connexion est ouverte, vous l'incrémenter, quand est fermée, vous décrémenter. Fait quelque chose comme cela répondre à votre besoin?Qui pourrait fonctionner à condition que la connexion internet est stable. Que faire si il y avait une coupure de courant? Le mondial AtomicInteger ne serait jamais être décrémenté. J'idéalement besoin d'un les battements de coeur de type de mise en œuvre.
OriginalL'auteur Bogdan
Appelez simplement:
pour le courtier config où vous souhaitez l'activer (fonctionne avec un simple courtier en trop).
Merci beaucoup de l'homme. À l'aide de cette prise de re-connexion a fonctionné pour moi.
OriginalL'auteur Javatar
De simple courtier, vous pouvez config battement de coeur comme ceci:
OriginalL'auteur andrey_tr