
com.github.gkutiel.flip.web.Flip Maven / Gradle / Ivy
package com.github.gkutiel.flip.web;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerList;
import org.eclipse.jetty.server.handler.ResourceHandler;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
public class Flip {
public static abstract class SingleStringParamHandler extends Flipper {
public abstract T handle(String arg);
}
public interface WebSocketListener {
void onClose(FlipSocket flipSocket);
void onOpen(FlipSocket flipSocket);
}
private final int port;
private WebSocketListener webSocketListener;
public Flip(final int port) {
this.port = port;
}
public void setWebSocketListener(final WebSocketListener webSocketListener) {
this.webSocketListener = webSocketListener;
}
public void start() {
try {
final ResourceHandler staticHandler = new ResourceHandler();
staticHandler.setResourceBase("web");
staticHandler.setWelcomeFiles(new String[] { "index.xml", "index.html" });
final ResourceHandler viewHandler = new ResourceHandler();
viewHandler.setResourceBase("view");
final HandlerList handlers = new HandlerList();
handlers.addHandler(FileHandler.FLIP_JS);
handlers.addHandler(staticHandler);
handlers.addHandler(viewHandler);
handlers.addHandler(new DynamicContentHandler());
handlers.addHandler(FileHandler.FAVICON_ICO);
if (webSocketListener != null) {
final ServletContextHandler servletContextHandler = new ServletContextHandler(handlers, "/");
servletContextHandler.addServlet(new ServletHolder(new WebSocketHandler(webSocketListener)), "/ws");
}
final Server server = new Server(port);
server.setHandler(handlers);
server.start();
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy