私は次の問題に直面していますが、まだ解決策が見つかりませんでした。Java Websocket/MessageHandlerがグローバルスコープに戻りますか?
- UI部(1)
- バックエンド・アプリケーション(2)
- "クラウド内" microservice(3)
バックエンドアプリケーションは、UI用のWebサービス(REST)を提供して、マイクロサービスとの間で情報を取得し、マイクロサービスに情報を入力します。 マイクロサービスから取得したいものはすべて正常に動作しますが、 データをマイクロサービスに入れる場合、仕様にはWebSocket接続が必要です。これは、あまりにもうまく動作しますが、microserviceは今
{"statusCode":200,"messageId":"1234567890"}
問題のように、(未)に成功し、コマンドの後にメッセージを返している:私は自分のアプリケーションでこのメッセージを取得し、UIに戻ってそれを送ることができますどのように、ユーザーはコマンドが成功したかどうかを知ることができますか?私はこれを試したときのために
:
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の親メソッドにこれをどのように渡すことができるのか分かりませんurnはちょうどResponseEntity.ok()
を返すinsted。私はとてもとても私を判断しないでください、まだJavaでのWebSocketの接続に使用されていないよ
;-)
はあなたの助けをいただき、ありがとうございます。
コントローラにはinitメソッドがありますか? – nandsito
'@ PostContruct'アノテーション付きです。 – sebastian