Je suis confronté au problème suivant et je n'ai trouvé aucune solution de travail pour le moment. j'ai 3 applications différentes qui doivent communiquer entre eux:Java Websocket/MessageHandler retourner à la portée globale?
- la partie de l'interface utilisateur (1)
- l'application d'arrière-plan (2)
- la Microservice "dans le nuage" (3)
L'application principale fournit un service Web (REST) à l'interface utilisateur pour obtenir et mettre des informations de/vers le microservice. Tout ce que je veux récupérer du microservice fonctionne bien, mais: Si je veux mettre des données dans le microservice, les spécifications requièrent une connexion websocket. Cela fonctionne bien aussi, mais le Microservice retourne un message après le (dé) commande avec succès, comme
{"statusCode":200,"messageId":"1234567890"}
Le problème est maintenant: Comment puis-je saisir ce message dans ma demande et le renvoyer à l'interface utilisateur, si l'utilisateur sait si la commande a réussi?
Pour le moment j'ai essayé ceci:
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");
}
Je peux voir la sortie de la console du retour de MessageHandler, mais je ne sais pas comment je peux passer cela à la méthode parente pour ret urn insta de juste renvoyer le ResponseEntity.ok()
.
Je ne suis pas très utilisé pour les connexions WebSocket en Java encore, alors s'il vous plaît ne me jugez pas ;-)
Merci pour votre aide.
Votre contrôleur dispose-t-il d'une méthode init? – nandsito
Il a, avec l'annotation '@ PostContruct'. – sebastian