Spring WebSocket End-Paind 및 메시지 보내기
-
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
.
그러나 작동하지 않습니다. 질문은 다음과 같습니다 :
- 메시지를 보내는 방법?
- 메시지를 보낼 때 끝점을 지정해야합니까?
고맙습니다!어떤 도움이 감사합니다!
해결책
testmessage ();//-- 여기에서 메시지를 보내야합니다
아니요, 동일한 클래스에서 메소드를 사용하기 때문에 @SendTo
를 사용하면 Proxy와 ImporterListener
가 다른 구성 요소의 메소드에서만 작동합니다.
다음을 주입해야합니다.
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
.
해당 메시지를 보내십시오.
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
.
메시지를 보낼 때 끝점을 지정해야합니까?
일부 POJO 메소드의 PROJODICETAG 코드는 클라이언트로부터 메시지를 수신하는 것입니다.그것은 보내는 부분을위한 것이 아닙니다.
제휴하지 않습니다 StackOverflow