Slide 55
Slide 55 text
- M. Baron - Page
mickael-baron.fr mickaelbaron
Personnaliser les messages
55
Exemple : déclarer les Encoder et Decoder
@ServerEndpoint(
value = "/chat/{chatroom}/{username}",
decoders = ChatMessageDecoder.class, encoders = ChatMessageEncoder.class)
public class ChatJSONEndpoint {
@OnMessage
public void onMessage(Session session, ChatMessage message) {
this.broadcastObjectMessage(message, allUsers.get(session.getId()), null,
allChatRooms.get(session.getId()));
}
private void broadcastObjectMessage(ChatMessage message, String user, Session exclude, String
currentChatRoom) {
allSessions.forEach((username, session) -> {
try {
if (!(exclude != null && session.getId().equals(exclude.getId()))) {
if (allChatRooms.get(session.getId()).equals(currentChatRoom)) {
session.getBasicRemote().sendObject(message);
}
}
} catch (IOException | EncodeException e) {
e.printStackTrace();
}
});
}
}
ChatJSONEndpoint.java du projet
ws-chatjsonwebsocket
Déclaration des objets
Decoder et Encoder
L’utilisation du type personnalisé permet de choisir
quelle méthode annotée @OnMessage à invoquer
WebSocket
Le message est envoyé comme un
objet ChatMessage. C’est au Encoder
de faire le travail.