La primavera websocket final poind y enviar el mensaje
-
21-12-2019 - |
Pregunta
Tengo una JMS oyente, y tengo que llevar el mensaje, manipular y, a continuación, redirigir a una página con websocket.
Bueno, solo estoy confundido acerca de la configuración, he configurado el 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();
}
Y este debe ser correcto, Entonces mi página web es:
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);
});
Y la conexión funciona.
Ahora En mi jms escucha traté de enviar un mensaje de esta manera:
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
Pero no funciona.Las preguntas son:
- Cómo enviar un mensaje?
- ¿Dónde tengo que especificar el punto final (secondep) al enviar un mensaje?
Gracias!cualquier ayuda es muy apreciada.
Solución
TestMessage();//<--- tienen que enviar el mensaje aquí
No, No tiene no enviar, porque utiliza el método de la misma clase, pero @SendTo
hace que su ImporterListener
como proxy y Advice
trabajará en el método sólo desde otro componente.
Se debe inyectar este:
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
Y enviar un mensaje con que:
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
¿Dónde tengo que especificar el punto final (secondep) al enviar un mensaje?
Es para el @MessageMapping("/ws/secondep")
en algunos POJO método de recibir el mensaje de los clientes.No es para el envío de parte.