[英]Spring websocket end-poind and send message
我有一个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
使您的ImporterListener
作为代理,而Advice
仅适用于另一个组件中的方法。
您应该注入:
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
并使用以下信息发送消息:
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
发送消息时,我必须在哪里指定终点(秒)?
某些POJO方法上的@MessageMapping("/ws/secondep")
用于从客户端接收消息。 它不是用于发送部分。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.