blob: 07123719d6f7e6014b456244a768e182326bc986 [file] [log] [blame]
package fi.iki.elonen;
public class NanoWebSocketServer extends NanoHTTPD implements IWebSocketFactory {
public static final String MISSING_FACTORY_MESSAGE = "You must either override this method or supply a WebSocketFactory in the constructor";
private final WebSocketResponseHandler responseHandler;
public NanoWebSocketServer(int port) {
super(port);
responseHandler = new WebSocketResponseHandler(this);
}
public NanoWebSocketServer(String hostname, int port) {
super(hostname, port);
responseHandler = new WebSocketResponseHandler(this);
}
public NanoWebSocketServer(int port, IWebSocketFactory webSocketFactory) {
super(port);
responseHandler = new WebSocketResponseHandler(webSocketFactory);
}
public NanoWebSocketServer(String hostname, int port, IWebSocketFactory webSocketFactory) {
super(hostname, port);
responseHandler = new WebSocketResponseHandler(webSocketFactory);
}
@Override
public Response serve(IHTTPSession session) {
Response candidate = responseHandler.serve(session);
return candidate == null ? super.serve(session) : candidate;
}
public WebSocket openWebSocket(IHTTPSession handshake) {
throw new Error(MISSING_FACTORY_MESSAGE);
}
}