Bonjour,
Je suis en train de développer une application Jee avec plusieurs tableaux collaboratifs.
Côté javascript le client se connecte comme ça :
Avec wsUri une variable qui contient l'adresse de la WebSocket.
Code : Sélectionner tout - Visualiser dans une fenêtre à part var websocket = new WebSocket(wsUri);
Côté Java :
WebSocket JEE avec l'annotation :
Quand je veux envoyer un message aux clients, je fais :
Code : Sélectionner tout - Visualiser dans une fenêtre à part @ServerEndpoint("/websocket2")
peer est donné dans la méthode :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for (Session peer : client.getOpenSessions()) { peer.getBasicRemote().sendObject(message); }
Comment dois-je m'y prendre pour envoyer des messages uniquement aux utilisateurs concerné ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @OnMessage public synchronized void message(String message, Session client) throws IOException, EncodeException {
Merci d'avance.
Au revoir.
==============================================
Edit : j'ai une idée.
Quand un utilisateur se connecte à un tableau il envoie un message de connexion par websocket.
Côté Java quand je reçois ce message, je vais mémorisé l'id de la session et la lié avec le tableau sur lequel l'utilisateur vient de se connecter.
Ensuite je saurai quel session va avec quel tableau.
Je vais tester ça.
==============================================
Re Edit : Il me manque quelque chose, je ne sais pas qui envoie le message.
Je ne peux donc pas lié une session à un tableau.
Faut que je trouve quelque chose d'autre.
==============================================
Re Re Edit :
Je peux peut être bricoler quelque chose avec ça :
Apparemment dès qu'un client se connecte cette méthode est appelé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 @OnOpen public void open(Session session, EndpointConfig conf) { System.out.println("OPEN SESSION : "+session); }
Par contre le client n'envoie pas l'id du tableau dans lequel il se trouve lorsqu'il se connecte.
=============================================
En utilisant : session.getUserProperties() du côté serveur.
Et :
Comme ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 room = $('#chatroom option:selected').val(); wsocket = new WebSocket(serviceLocation + room);
http://www.hascode.com/2013/08/creat...d-glassfish-4/
Je devrai pouvoir faire quelque chose.
=============================================
Ah mais qu'est-ce que je suis con !
En fait il fallait juste faire :
Je vais essayer quelque chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part client.getId()
=============================================
Ça pourrait fonctionner, mais en fait non.
Quand je recharge la page web l'id du Client change vu que je reconnecte la websocket.
Je ne sais pas comment faire pour ne pas reconnecté la websocket si elle l'est déjà.
Il faudrait que je suis puisse envoyer des informations quand le client se connecte.
Partager