[WebSocket] Question à propos de l'upload d'un serveur vers le client
Bonjour,
J'ai développé une API qui permet de faire des requêtes via Websocket et de récupérer un historique de valeur.
La requête se fait dans le format JSON, et la réponse est pour le moment envoyée dans le format JSON également mais j'aimerais pouvoir choisir entre du JSON et du XLSX (Excel).
Faut-il implémenter cela d'une manière différente que de simplement renvoyer du "texte" au client ?
Je vous met le code du ServerEndpoint et de l'Encoder :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @ServerEndpoint(
value = "/test",
encoders = { TextEncoder.class },
decoders = RequestDecoder.class
)
public class MongoInterfaceEndpoint {
@OnMessage
public void onMessage(AbstractRequest request, Session session) {
IResponse response = null;
if (request instanceof TextRequest) {
response = new TextResponse("texte envoyé tel quel.");
}
session.getAsyncRemote().sendObject(response);
}
} |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class TextEncoder implements Encoder.Text<TextResponse> {
@Override
public String encode(TextResponse resp) throws EncodeException {
StringWriter sWriter = new StringWriter();
JsonWriter jsonWriter = Json.createWriter(sWriter);
JsonObject jsonObject = Json.createObjectBuilder()
.add("text", resp.getText())
.build();
jsonWriter.writeObject(jsonObject);
jsonWriter.close();
return sWriter.toString();
}
@Override
public void init(EndpointConfig ec) { }
@Override
public void destroy() { }
} |
Est ce que pour donner la possibilité au client de télécharger je dois utiliser la classe Encoder.Binary<> ou une autre ? ou alors Encoder.Text suffit ?
Merci