Home | History | Annotate | Download | only in elonen
      1 package fi.iki.elonen;
      2 
      3 
      4 public class NanoWebSocketServer extends NanoHTTPD implements IWebSocketFactory {
      5     public static final String MISSING_FACTORY_MESSAGE = "You must either override this method or supply a WebSocketFactory in the constructor";
      6 
      7     private final WebSocketResponseHandler responseHandler;
      8 
      9     public NanoWebSocketServer(int port) {
     10         super(port);
     11         responseHandler = new WebSocketResponseHandler(this);
     12     }
     13 
     14     public NanoWebSocketServer(String hostname, int port) {
     15         super(hostname, port);
     16         responseHandler = new WebSocketResponseHandler(this);
     17     }
     18 
     19     public NanoWebSocketServer(int port, IWebSocketFactory webSocketFactory) {
     20         super(port);
     21         responseHandler = new WebSocketResponseHandler(webSocketFactory);
     22     }
     23 
     24     public NanoWebSocketServer(String hostname, int port, IWebSocketFactory webSocketFactory) {
     25         super(hostname, port);
     26         responseHandler = new WebSocketResponseHandler(webSocketFactory);
     27     }
     28 
     29     @Override
     30     public Response serve(IHTTPSession session) {
     31         Response candidate = responseHandler.serve(session);
     32         return candidate == null ? super.serve(session) : candidate;
     33     }
     34 
     35     public WebSocket openWebSocket(IHTTPSession handshake) {
     36         throw new Error(MISSING_FACTORY_MESSAGE);
     37     }
     38 }
     39 
     40