title: How to implement a WebSocket Server in java?
body: <p>I'm working on setting up my first websocket server for a communications app. I can't seem to figure out how websockets are implemented in Java. </p>
  
  <p>I've tried, unsuccessfully, creating an annotation based Endpoint, but I'm not sure where the client info is going to come through. This is basically the gist of my code, without going into mundane details. </p>
  
  <p>I'm trying to make the class MessageHelper deal with the websocket info transfer, I just can't grasp how to actually get the transfer there.</p>
  
  <pre><code>class MainServer implements Runnable {
  // VARIABLES
      ServerSocket serverSocket = null;
      int port;
  // CONSTRUCTORS
      MainServer(int p) {
          this.port = p;
      }
  // METHODS
      public void run() {
          openServerSocket();
          while(!isStopped()){
              try{
                  clientSocket = serverSocket.accept();
              } catch(IOException e) {
                  // Do something
              }
              new Thread(new MainThread(clientSocket)).start();
          }
      }
  }
  
  // Other methods below.
  </code></pre>
  
  <pre><code>public class MainThread {
  
      final Socket socket;
  
  
      MainThread(Socket s) {
          this.socket = s;
      }
  
      public void run() {
          try{
              BufferedReader br = new BufferedReader(
                  new InputStreamReader(socket.getInputStream()));
  
              String input = br.readLine(), read = br.readLine();
              while(!input.isEmpty()) {
                  read += "\n";
                  read += input;
                  input = br.readLine();
              }
  
              /**
              *  Everything works fine, I'm just not sure where to go
              * from here. I tried creating MessageHelper into the java
              * websocket implementation using annotations but it did not 
              * accept input from the client after the handshake was
              * made. My client would send something but it would just 
              * give and EOFException.
              **/
              if(websocketHandshakeRequest(read)) {
                  MessageHelper messageHelper = 
                      new MessageHelper(this.socket);
              } else {
                  // Do something
              }
          } catch(Exception e) {
              // Do something.
          }
      }
  }
  </code></pre>