Printemps websocket fin-poind et envoyer un message
-
21-12-2019 - |
Question
J'ai un JMS à l'écoute, et je dois prendre le message, de le manipuler et ensuite rediriger vers une page à l'aide de websocket.
Eh bien, je suis juste confus au sujet de la configuration, j'ai configuré le WebSocketConfig:
@Configuration
@EnableWebSocketMessageBroker
@EnableScheduling
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic", "/queue");
config.setApplicationDestinationPrefixes("/app");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws/firstep/").withSockJS();
registry.addEndpoint("/ws/secondep/").withSockJS();
}
Et ce qu'il devrait être correct, Alors, ma page est:
var socket = new SockJS("/myapp-web/api/ws/secondep/",undefined,options);
var stompClient = Stomp.over(socket);
stompClient.connect({
company : "xxx"
}, function(frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/register', function(message){
console.log('message: ' + message);
});
stompClient.subscribe('/topic/update', function(message){
console.log('message: ' + message);
});
Et la connexion fonctionne.
Maintenant Sur mon listener jms j'ai essayé d'envoyer un message de cette façon:
public class ImporterListener implements MessageListener {
Logger logger = LoggerFactory.getLogger(ImporterListner.class);
@SendTo("/topic/register")
private String TestMessage() {
return "TestMessage";
}
@Override
public void onMessage(Message message) {
logger.info("Request on message");
if (message instanceof MapMessage) {
MapMessage t = (MapMessage) message;
TestMessage(); //<--- have to send the message here
Mais ça ne fonctionne pas.Les questions sont:
- Comment envoyer un message?
- Où dois-je spécifier le point de fin (secondep) lorsque j'envoie un message?
Merci!!!!toute aide est appréciée!
La solution
TestMessage();//<--- la pour envoyer le message ici
Non, il a pas à envoyer, parce que vous utilisez la méthode de la même classe, mais @SendTo
rend votre ImporterListener
en tant que proxy et Advice
va travailler sur la méthode à partir d'un autre composant.
Vous devez injecter ce:
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
Et envoyer un message en utilisant que:
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
Où dois-je spécifier le point de fin (secondep) lorsque j'envoie un message?
Il est pour le @MessageMapping("/ws/secondep")
sur certains POJO méthode de réception de message de la part de clients.Ce n'est pas pour l'envoi de la partie.