Bonjour,
je voudrais écrire une application échangeant les information via le protocole Websocket, j'ai suivi les exemples donnée sur le net.
tout se passe bien lorsque le ServerEndPoint envoie et reçoit les messages texte.
mais dès que j'utilise un Decoder et un Encoder pour échanger les messages, ma méthode annoté ne fonctionne plus.
le plus embêtant est que je n'ai aucune erreur; tant du côté serveur que du côté client (javascript).
Quelqu'un a-t-il déjà traité un cas similaire s'il vous plait
voici ma classe Serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 
 /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package server;
 
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.websocket.EncodeException;
import javax.websocket.EndpointConfig;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
 
@ServerEndpoint(value = "/chat/{room}", encoders = {ChatMessagesEncoder.class}, decoders = {ChatMessageDecoder.class})
public class PointTerm {
 
    private final Logger log = Logger.getLogger(getClass().getName());
 
    @OnOpen
    public void open(final Session session, EndpointConfig config, @PathParam("room") String room) {
        log.log(Level.INFO, "--- login welcome...{0}", room);
        session.getUserProperties().put("room", room);
        System.err.println("---- " + room);
    }
 
    /**
     *
     * @param session 
     * @param msg
     * @return 
     * @throws java.io.IOException 
     * @throws javax.websocket.EncodeException 
     */
    @OnMessage
    public void newMessage(ChatMessage msg, Session session) throws IOException, EncodeException{
        String room = (String) session.getUserProperties().get("room");
        System.err.println("----- Received");
       for (Session s : session.getOpenSessions()) {
           if (s.isOpen() && room.equals(s.getUserProperties().get(("room")))) {
                try {
                    s.getBasicRemote().sendObject(msg);
                } catch (IOException | EncodeException ex) {
                   Logger.getLogger(PointTerm.class.getName()).log(Level.SEVERE, null, ex);
               }
            }
       }
    } 
 
    @OnError
    public void erreur(Throwable error) {
        System.err.println("---- erreur...");
    }
}