Весной Websocket End-Poind и отправьте сообщение
-
21-12-2019 - |
Вопрос
У меня есть слушатель JMS, и я должен взять сообщение, манипулировать им, а затем перенаправить его на страницу с помощью Websocket.
Ну, я просто запутался в конфигурации, я настроил 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();
}
.
И это должно быть правильно, то моя веб-страница:
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);
});
.
и подключение работает.
Теперь на моем слушателе JMS я пытался отправить сообщение таким образом:
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
.
Но это не работает. Вопросы:
- Как отправить сообщение?
- где мне нужно указать конечную точку (второйEP), когда я отправляю сообщение?
Спасибо!Любая помощь ценится!
Решение
testmessage ();// <--- нужно отправить сообщение здесь
Нет, это не нужно отправлять, поскольку вы используете метод из того же класса, но @SendTo
делает ваш GeneracodicTagcode, поскольку прокси и ImporterListener
будет работать над способом только из другого компонента.
Вы должны ввести это:
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
.
и отправьте сообщение, используя это:
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
.
Где мне нужно указать конечную точку (вторые), когда я отправляю сообщение?
Для генеракодицетагкода на некотором методе POJO для получения сообщения от клиентов.Это не для отправки.