package ameba.container.grizzly.server.http.websocket;
import ameba.container.Container;
import org.glassfish.grizzly.filterchain.FilterChainBuilder;
import org.glassfish.grizzly.http.server.AddOn;
import org.glassfish.grizzly.http.server.HttpServerFilter;
import org.glassfish.grizzly.http.server.NetworkListener;
/**
* @author icode
*/
public class WebSocketAddOn implements AddOn {
private final Container container;
private final String contextPath;
public WebSocketAddOn(Container container, String contextPath) {
this.container = container;
this.contextPath = contextPath;
}
@Override
public void setup(NetworkListener networkListener, FilterChainBuilder builder) {
// Get the index of HttpServerFilter in the HttpServer filter chain
final int httpServerFilterIdx = builder.indexOfType(HttpServerFilter.class);
if (httpServerFilterIdx >= 0) {
// Insert the WebSocketFilter right before HttpServerFilter
builder.add(httpServerFilterIdx, new GrizzlyServerFilter(container, contextPath));
}
}
}