title: Close websocket connection with Java
body: <p>How to close a websocket connection using Java WebSocket API? I have used Java websocket API for both server and client end points. The application is working fine. But I don't know how to close the websocket, before the main thread ends.</p>
  
  <p>This is my ClientEndpoint</p>
  
  <pre><code>package websocket.client;
  
  import java.io.IOException;
  
  import javax.websocket.MessageHandler;
  import javax.websocket.OnError;
  import javax.websocket.OnMessage;
  import javax.websocket.OnOpen;
  import javax.websocket.Session;
  
  @ClientEndpoint
  public class EchoClient {
      Session session;
  
      //request
      @OnOpen
      public void onOpen(Session session, EndpointConfig config) {
          System.out.println("Connected to endpoint: " + session.getBasicRemote());
          this.session = session;
          sendMessage("Welcome to WebSocket");
      }
  
      //response
      @OnMessage
      public void onMessage(String text) {
          System.out.println("Received response in client from server: " + text);
      }
  
      @OnError
      public void onError(Session session, Throwable t) {
          t.printStackTrace();
      }
  
      private void sendMessage(String message) {
          System.out.println("Sending message from client to server: " + message);
          System.out.println(session);
          try {
              session.getBasicRemote().sendText(message);
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>And I use the following code to start the ClientEndPoint</p>
  
  <pre><code>import java.io.IOException;
  import java.net.URI;
  
  import javax.websocket.ContainerProvider;
  import javax.websocket.DeploymentException;
  import javax.websocket.WebSocketContainer;
  
  import websocket.client.EchoClient;
  
  public class WebSocketDemo {
      public static void main(String[] args) {
          String uri = "ws://localhost:8080/websocket";
          System.out.println("Connecting to " + uri);
          WebSocketContainer container = ContainerProvider.getWebSocketContainer();
          try {
              container.connectToServer(EchoClient.class, URI.create(uri));
          } catch (DeploymentException | IOException e) {
              e.printStackTrace();
          }
          try {
              Thread.sleep(5000);
          } catch (InterruptedException e) {
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>PS : I haven't used JavaScript.</p>