У меня возникла следующая проблема, и я не нашел рабочего решения. У меня есть 3 различных приложений, которые должны взаимодействовать друг с другом:Java Websocket/MessageHandler возвращается в глобальную область?
- интерфейс часть (1)
- приложение бэкенд (2)
- microservice "в облаке" (3)
Бэкэнд-приложение предоставляет веб-сервис (REST) для пользовательского интерфейса для получения и ввода информации из/в микросервис. Все, что я хочу получить от микросервиса, отлично работает, но: Если я хочу поместить данные в микросервис, для спецификации требуется соединение с веб-разъемом. Это работает тоже хорошо, но microservice возвращает сообщение после (un-) успешной команды, как
{"statusCode":200,"messageId":"1234567890"}
Сейчас проблема заключается в: Как я могу захватить это сообщение в моем приложении, и отправить его обратно в пользовательский интерфейс, поэтому пользователь знает, была ли команда успешной?
На данный момент я попытался это:
WebSocketClient.java
@OnMessage
public void onMessage(Session session, String msg) {
if (this.messageHandler != null) {
this.messageHandler.handleMessage(msg);
}
}
public void addMessageHandler(MessageHandler msgHandler) {
this.messageHandler = msgHandler;
}
public static interface MessageHandler {
public String handleMessage(String message);
}
MyTotalAwesomeController.java
public class MyTotalAwesomeController {
WebSocketClient wsc = new WebSocketClient();
...
@RequestMapping(value="/add", method={RequestMethod.POST, RequestMethod.OPTIONS})
public ResponseEntity<Object> putDataToMicroservice(@RequestBody Map<String, Object> payload, @RequestHeader(value = "authorization") String authorizationHeader) throws Exception {
...
wsc.addMessageHandler(new WebSocketClient.MessageHandler() {
public String handleMessage(String message) {
System.out.println("RETURN MSG FROM WSS : " + message);
return message;
}
});
return ResponseEntity.ok("worked");
}
Я вижу выход консоли от возвращения MessageHandler, но я не знаю, как я могу передать это родительскому методу для ret Урн только что вернул ResponseEntity.ok()
.
Я не очень привык к WebSocket соединений в Java еще, поэтому, пожалуйста, не судите меня ;-)
Спасибо за вашу помощь.
У вашего контроллера есть метод init? – nandsito
Он имеет аннотацию '@ PostContruct'. – sebastian