import java.net.URI; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; import javax.websocket.ClientEndpointConfig; import javax.websocket.ContainerProvider; import javax.websocket.Endpoint; import javax.websocket.EndpointConfig; import javax.websocket.MessageHandler; import javax.websocket.Session; import javax.websocket.WebSocketContainer; import sun.misc.BASE64Encoder; @SuppressWarnings("restriction") public class Client { final static CountDownLatch messageLatch = new CountDownLatch(1); public static void main(String[] args) { try { String msg = "{\"subscribe\": \"/test\"}"; Endpoint endpoint = new Endpoint() { @Override public void onOpen(Session session, EndpointConfig config) { session.addMessageHandler(new MessageHandler.Whole() { @Override public void onMessage(String content) { System.out.println("Received message: "+content); messageLatch.countDown(); } }); try { System.out.println("Sending message to endpoint: " + msg); System.out.println("Session Id:: "+session.getId()); session.getBasicRemote().sendText(msg); } catch (Exception e) { e.printStackTrace(); } } }; ClientEndpointConfig.Configurator configurator = new ClientEndpointConfig.Configurator() { public void beforeRequest(Map> headers) { String credentials = "username:password"; headers.put("Authorization", Arrays.asList("Basic " + new BASE64Encoder().encode(credentials.getBytes()))); System.out.println("Header set successfully"); } }; ClientEndpointConfig clientConfig = ClientEndpointConfig.Builder.create() .configurator(configurator) .build(); WebSocketContainer container = ContainerProvider.getWebSocketContainer(); URI uri = new URI("wss://hostname:port/demo"); Session session = container.connectToServer(endpoint, clientConfig, uri); messageLatch.await(300, TimeUnit.SECONDS); session.close(); } catch (Exception ex) { Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex); } } }