2014-02-17 8 views
9

Ich möchte einen WebSocket-Endpunkt Client in Java (so rein wie möglich, keine Frameworks), aber praktisch alle Beispiele, die ich gefunden habe, haben nur Server-Endpunkte in Java, während der Client in Javascript ist. Kann mir jemand auf ein gutes Kundenbeispiel hinweisen oder eines anbieten?Erstellen Sie einen eigenständigen Java-Websocket-Client-Endpunkt?

+0

Warum interessieren Sie sich für Websockets, wenn Ihr Client Java ist? Schnittstellen zu einem vorhandenen Server, der nur eine Websocket-API bereitstellt? Und warum keine Bibliotheken? –

+1

Das ist richtig, ich möchte eine Verbindung zu einem Websocket-Server herstellen. Bibliotheken sind in Ordnung, ich bevorzuge es, mich auf Kernbibliotheken zu konzentrieren, vorzugsweise nur auf Oracle, und nicht einen Haufen von Gläsern von einigen fly-by-night-Drittanbietern oder zufälligen github-Entwicklern hinzuzufügen, die von einem großen Unternehmen nicht unterstützt werden. –

+0

Benutzer Tyrus ein Java-Web-Socket-Standalone-Client. - https://tyrus.java.net/ –

Antwort

8

@ClientEndpoint annottation Teil der Spezifikation ist, so dass ich Ich schlage vor, das zu verwenden, hier ist ein good tutoria l, siehe Schritt 4 und 6.

Schritt 6 von Openshift Tutorial

@ClientEndpoint 
public class WordgameClientEndpoint { 

private static CountDownLatch latch; 

private Logger logger = Logger.getLogger(this.getClass().getName()); 

@OnOpen 
public void onOpen(Session session) { 
    // same as above 
} 

@OnMessage 
public String onMessage(String message, Session session) { 
    // same as above 
} 

@OnClose 
public void onClose(Session session, CloseReason closeReason) { 
    logger.info(String.format("Session %s close because of %s", session.getId(), closeReason)); 
    latch.countDown(); 
} 

public static void main(String[] args) { 
    latch = new CountDownLatch(1); 

    ClientManager client = ClientManager.createClient(); 
    try { 
     client.connectToServer(WordgameClientEndpoint.class, new URI("ws://localhost:8025/websockets/game")); 
     latch.await(); 

    } catch (DeploymentException | URISyntaxException | InterruptedException e) { 
     throw new RuntimeException(e); 
    } 
} 

}

in diesem Beispiel sie tyrus verwenden, die für WebSockets in Java die Referenzimplementierung ist, also denke ich, dass Ihre Anforderung an ein erfüllt gut unterstützte Websocket-Implementierung.

Verwandte Themen