Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

WebSocket server con Java

Come utilizzare la libreria standard di Java EE 7 per implementare un WebSocket server, utilizzandolo per interagire con un client web.
Come utilizzare la libreria standard di Java EE 7 per implementare un WebSocket server, utilizzandolo per interagire con un client web.
Link copiato negli appunti

Abbiamo visto come implementare un WebSocket server in C#, e per farlo abbiamo avuto bisogno di utilizzare una libreria esterna. In questa lezione vedremo invece come ottenere lo stesso risultato su Java, sfruttando il supporto a questa tecnologia incluso, a partire da Java EE 7, nella libreria standard (utilizzando il package javax.websocket).

Per prima cosa, dobbiamo creare un progetto Java basato su Java EE 7, e possiamo farlo con una delle IDE disponibili gratuitamente online (come Eclipse o NetBeans). Su NetBeans, ad esempio, creiamo una nuova Web Application ed assicuriamoci di utilizzare GlassFish come server (versione 4.0). Se preferiamo utilizzare Eclipse, invece, dovremo optare per Tomcat 8.

Definiamo quindi un package (che possiamo chiamare MyServer), ed al suo interno creiamo la classe WebSocketServer. Il codice per implementare il nostro server è abbastanza leggibile, ed il suo comportamento è facilmente intuibile:

import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/test")
public class WebSocketServer {
    @OnOpen
    public void onOpen(Session session) {
        // Metodo eseguito all'apertura della connessione
    }
    @OnMessage
    public String onMessage(String message, Session session) {
        // Metodo eseguito alla ricezione di un messaggio
        // La stringa 'message' rappresenta il messaggio
        // Il valore di ritorno di questo metodo sara' automaticamente
        // inviato come risposta al client. Ad esempio:
        return "Server received [" + message + "]";
    }
    @OnClose
    public void onClose(Session session) {
       // Metodo eseguito alla chiusura della connessione
    }
    @OnError
    public void onError(Throwable exception, Session session) {
        // Metodo eseguito in caso di errore
    }
}

La prima istruzione significativa è la direttiva @ServerEndpoint(value = "/test"). Essa serve a specificare il nome del WebSocket server che utilizzeremo su JavaScript per gli scambi di messaggi. Nel nostro caso, dal momento che il nome del package era MyServer, ed abbiamo specificato il valore /test come end point, su JavaScript apriremo la connessione come segue:

var socket = new WebSocket("ws:/X.X.X.X:8080/MyServer/test/");

Il restante funzionamento della classe è abbastanza intuitivo. Possiamo eseguire del codice all'apertura e chiusura di una connessione (metodi onClose ed onOpen), ed abbiamo la possibilità di rispondere ai messaggi in arrivo dal client tramite il metodo onMessage, eventualmente rispondendo tramite il valore di ritorno.

Approcci alternativi

L'esempio visto non rappresenta l'unica opzione per implementare un WebSocket server con Java. Esistono infatti numerose librerie alternative, che talvolta possono consentire di specificare ulteriori dettagli. Ne citiamo alcune di seguito:

Ti consigliamo anche