我正面临以下问题,我发现还没有工作解决方案。 我有应该彼此通信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