Spring WebSocketエンドポイントとメッセージを送信します
-
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
.
しかしそれはうまくいきません。 質問は次のとおりです。
- メッセージを送信する方法?
- メッセージを送信するときにエンドポイント(2台目)を指定する必要がありますか?
ありがとうございます!あらゆる助けが高く評価されています!
解決
TestMessage();// <---ここにメッセージを送信する必要があります
いいえ、同じクラスからメソッドを使用するため、@SendTo
がProxyおよびImporterListener
を別のコンポーネントからのみメソッドで動作します。
これを注入する必要があります。
@Autowired
@Qualifier("brokerMessagingTemplate")
private MessageSendingOperations brokerMessagingTemplate;
.
を使用してメッセージを送信します。
brokerMessagingTemplate.convertAndSend("/topic/register", "TestMessage");
.
メッセージを送信するときに終点(2台目)を指定する必要がありますか?
POJOメソッドがAdvice
では、クライアントからメッセージを受信することです。送信部品のためのものではありません。
所属していません StackOverflow