Ich habe zwei verschiedene java frühling anwendungen. Der erste sendet eine Nachricht mit Websocket und es funktioniert gut.java feder websocket senden antwort von anderen anwendung
Client:
var socket = new SockJS('http://localhost:8080/myapp/hello');
stompClient = Stomp.over(socket);
stompClient.connect({}, function(frame) {
console.log('Connected: ' + frame);
stompClient.subscribe('/topic/greeting', function(greeting){
console.log(greeting.body);
//showGreeting(JSON.parse(greeting.body).content);
});
});
Server:
@MessageMapping("/send/{widgetId}")
public Greeting userMessage(@DestinationVariable String widgetId,
UserMessageWrapper userMessageWrapper) throws Exception {
dispatchMessage(widgetId, userMessageWrapper.getUserToken(),
userMessageWrapper.getMessage(), userMessageWrapper.getUserAgent());
return new Greeting("asdasdsa");
}
Es funktioniert gut, aber ich brauche eine Antwort auf diese Nachricht von anderen Java-Anwendung auf andere Server zu senden. Ich habe einen Quarz-Job dort und es scannt db und sendet Antworten an abonnierte Clients mit WebSockets. Ich möchte, dass jeder Klient nur eine Nachricht für ihn empfängt, keine Sendung.
public void callJSWebSocket(){
SimpMessageHeaderAccessor headerAccessor = SimpMessageHeaderAccessor
.create(SimpMessageType.MESSAGE);
headerAccessor.setSubscriptionId("sub-0");
headerAccessor.setLeaveMutable(true);
messagingTemplate.convertAndSendToUser("user","/topic/greeting",
"asdsadasd1212");
}
und Konfiguration in beiden Fällen:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic");
config.setApplicationDestinationPrefixes("/ws");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/hello").setAllowedOrigins("*").withSockJS();
}
}
Ich verstehe nicht, wie Nachricht von einer anderen Anwendung richtig zu senden. Ich denke, ich muss sessionId irgendwo abrufen und speichern und dann für die Antwort verwenden. Außerdem, sollte ich Config und Controller für die Antwort erstellen und was mache ich falsch?