package com.aceevo.ursus.example.websocketclient;
import org.glassfish.tyrus.client.ClientManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
import javax.websocket.*;
import java.io.IOException;
import java.net.URI;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
public class SimpleWebSocketClient {
private CountDownLatch messageLatch;
private static final String SENT_MESSAGE = "Hello WebSocket";
final Logger logger = LoggerFactory.getLogger(SimpleWebSocketClient.class);
public SimpleWebSocketClient() {
// Bridge j.u.l in Grizzly with SLF4J
SLF4JBridgeHandler.removeHandlersForRootLogger();
SLF4JBridgeHandler.install();
logger.info("starting");
}
public static void main(String[] args) {
SimpleWebSocketClient simpleWebSocketClient = new SimpleWebSocketClient();
simpleWebSocketClient.run();
}
public void run() {
try {
messageLatch = new CountDownLatch(1);
final ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build();
ClientManager client = ClientManager.createClient();
client.connectToServer(new Endpoint() {
@Override
public void onOpen(final Session session, EndpointConfig config) {
try {
session.addMessageHandler(new MessageHandler.Whole<String>() {
@Override
public void onMessage(String message) {
logger.info("Server replied with : " + message);
try {
session.close();
messageLatch.countDown();
} catch (IOException ex) {
logger.debug(ex.getMessage(), ex);
}
}
});
session.getBasicRemote().sendText(SENT_MESSAGE);
} catch (IOException e) {
e.printStackTrace();
}
}
}, cec, new URI("ws://localhost:8080/echo"));
messageLatch.await(100, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
}
}
}