我正面臨以下問題,我發現還沒有工作解決方案。 我有應該彼此通信3個不同的應用:Java Websocket/MessageHandler返回全局範圍?
- UI部分(1)
- 後端應用程序(2)
- 「雲」 的微服務(3)
後端應用程序爲UI提供了Web服務(REST),以便從微服務中獲取信息並將信息放入微服務。 我想從微服務中抓取的所有東西都可以正常工作,但是: 如果我想將數據放到微服務中,則需要Websocket連接。這工作也沒關係,但微服務的(未)成功命令後返回的消息,像
{"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()
。
我不是很習慣在Java的WebSocket連接還沒有,所以請不要對我做出判斷;-)
謝謝您的幫助。
您的控制器是否有init方法? – nandsito
它有'@ PostContruct'註釋。 – sebastian