
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 interface WebSocketListener {
void onClose(FlipSocket flipSocket);
void onOpen(FlipSocket flipSocket);
}
private final DynamicContentHandler dynamicContentHandler = new DynamicContentHandler();
private final int port;
public Flip(final int port) {
this.port = port;
}
public Flip catchAll(final String prefix, final Class> clazz) {
this.dynamicContentHandler.catchAll(prefix, clazz);
return this;
}
public void start() {
this.start(null);
}
public void start(final WebSocketListener webSocketListener) {
try {
final ResourceHandler resourceHandler = new ResourceHandler();
resourceHandler.setResourceBase("web");
resourceHandler.setWelcomeFiles(new String[] { "index.xml", "index.html" });
final HandlerList handlers = new HandlerList();
handlers.addHandler(this.dynamicContentHandler);
handlers.addHandler(FileHandler.FLIP_JS);
handlers.addHandler(resourceHandler);
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(this.port);
server.setHandler(handlers);
server.start();
} catch (final Exception e) {
throw new RuntimeException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy