Tutorial Websocket JEE 7

Nous allons voir comment réaliser un websocket avec JEE7
Pierre LISERONMis à jour le 21 Janv 2015

Nous allons voir comment réaliser un websocket avec JEE7.

Pré-requis pour faire des websocket en JEE7

  • Avoir un eclipse configuré
  • Avoir un serveur dapplication JEE7. Donc ce tutorial nous allons utilisé Widlfly 8.

Quest ce quun websocket

Si vous ne savez pas ce quest un websocket, commencer par lire larticle suivant.

Définition et cas dutilisation dun websocket

Création dun websocket en Java JEE7

Premièrement il faut créer un projet Dynamic Web Project dans votre Eclipse. Un fois ce projet créer, rajouter une classe qui va jouer le rôle de endpoint. Pour configurer votre endpoint, en JEE7, il suffit dannoter votre classe avec lannotation

  @ServerEndpoint<span class="s1">(</span><span class="s2">« /websocket »</span><span class="s1">)</span>
Annotation Description Exemple
@OnMessage Qui est la méthode qui va recevoir les messages public String hello(String pMessage)
@OnOpen Une méthode qui sera appelée lors de louverture du socket public void onOpen(Session pSession)
@OnClose Une méthode qui sera appelée lors de la ferture du socket public void onClose(CloseReason pCloseReason)

Maintenant que vous avez une méthode @OnMessage, il vous suffit de traiter le paramètre envoyé par le client, à savoir pMessage. Ici on utilise un String mais on pourrait travailler avec dautres types de variables. Pour la suite, il vous suffit de déployer votre application sur votre serveur WildflyWildfly est un serveur d'application Java (on peut le faire directement depuis la vue eclipse->server)

Envoye dun message depuis le serveur (push)

 

Pour envoyer un message depuis le serveur, il suffit dutiliser la session. Depuis une session, on peut facilement faire la chose suivante:

session.getBasicRemote().sendText(<span class="s2">« Mon message »</span>);
  <span class="s1">private</span> <span class="s1">static</span> Set<Session> <span class="s2">clients</span> = Collections.synchronizedSet(<span class="s1">new</span> HashSet<Session>());

WebSocket Tutorial Côté client

Pour le client, nous allons utiliser JAVASCRIPT pour créer notre client.

Sur la plupart des navigateur récent, les websockets sont très bien supportés: http://caniuse.com/#feat=websockets

On va donc dans un script JS créer notre adresse du serveur

function init() {
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) {
            onOpen(evt)
            };
            websocket.onmessage = function(evt) {
                onMessage(evt)
            };
            websocket.onerror = function(evt) {
                onError(evt)
            };

    }
    function onOpen(evt) {
    }
    function onMessage(evt) {
        alert("Message reçu: " + evt.data );
    }

    function onError(evt) {
    }

Il suffit comme en JAVA de binder les trois méthodes utiles.

Dernière choses à savoir, comment envoyer un message depuis le client, tout simplement en appeler depuis lobjet websocket la méthode denvoi de message:

java websocket.send(message);