GEDOPLAN

WebSocket mit Java EE und JavaScript

Alle

Die Spezifikation (rfc6455) zu Websockets hat schon einige Jahre auf den Buckel, ist damit aber in allen bekannten Browsern verfügbar. Die Javascript API ist übersichtlich und mit nur wenigen Schritten kann eine bidirektionale Verbindung zwischen Browser und Server hergestellt werden, um Benachrichtigungen vom Server zu erhalten ohne ein alt modisches Polling zu implementieren. Auf Java-Seite steht mit Java EE 7 ebenfalls ein Standard bereit (jsr356) der die Server-Seite für Websocket Szenarien bereit stellt. Werfen wir einen kurzen Blick auf das Zusammenspiele im Beispiel JavaScript + Java EE 7

Die Initialisierung einer Websocket Verbindung in JavaScript ist mit einigen wenigen Zeilen Code bereitgestellt und stellt  Listener-Methoden bereit um auf Ereignisse zu reagieren

var wsConnection = new WebSocket('ws://example.ws.service/ws');
wsConnection.onopen = function () {...};
wsConnection.onerror = function (error) {...};
wsConnection.onmessage = function (e) {...};

Auch das Pendant auf der Serverseite ist nicht wesentlich umfangreicher, das Vorgehen ist simple: wir erstellen eine Klasse und registrieren sie als WebSocket Endpoint mittels der Annotation „ServerEndpoint“. Die entsprechenden Nachrichten um auf Events zu reagieren werden mit zusätzlichen Annotation versehen. In unserem Beispiel führen wir zusätzlich eine Liste aller verbundenen Clients um diese mit Push-Nachrichten zu versorgen.

EchoEndpoint.java

@ServerEndpoint("/echo")
public class EchoEndPoint {

    private static Set<Session> userSessions = Collections.newSetFromMap(new ConcurrentHashMap<Session, Boolean>());

    @OnOpen
    public void onOpen(Session userSession) {
	System.out.println("Neue Verbindung aufgebaut...");
	userSessions.add(userSession);

    }

    @OnClose
    public void onClose(Session userSession) {
	System.out.println("Verbindung getrennt...");
	userSessions.remove(userSession);

    }

    @OnMessage
    public void onMessage(String message, Session userSession) {
	broadcast(message);

    }

    public static void broadcast(String msg) {
	System.out.println("Broadcast Nachricht an alle:" + msg);
	for (Session session : userSessions) {
	    session.getAsyncRemote().sendText("Re: " + msg);
	}

    }
}

 

websocket_demo

 

Das war es schon, mehr ist nicht nötig um JavaScript und Java EE 7 über einen WebSocket zusammen zu bringen.

Ein vollständiges Beispiel findet sich wie immer bei uns im Github:

websocket-demo @ GITHUB

 

 

Autor

Diesen Artikel teilen

LinkedIn
Xing

Gibt es noch Fragen?

Fragen beantworten wir sehr gerne! Schreibe uns einfach per Kontaktformular.

Schulungen mit der selben Kategorie:

Blogkategorie: Alle
Es wurden keine Ergebnisse gefunden.

weitere Artikel

Kontakt

Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!

Tim Neumann

Geschäftsleitung

GEDOPLAN GmbH
Stieghorster Straße 60
33605 Bielefeld

GEDOPLAN GmbH
Kantstraße 164
10623 Berlin

    Kontakt

    Tim Neumann

    Geschäftsleitung

    GEDOPLAN GmbH
    Stieghorster Straße 60
    33605 Bielefeld

    GEDOPLAN GmbH
    Kantstraße 164
    10623 Berlin

    Brauchen Sie eine individuelle IT-Schulung, eine fundierte Beratung oder eine individuelle Softwareentwicklung? Dann sind Sie hier genau richtig!