Я пытаюсь заставить работать обычный AbstractHandler и WebSocketAdapter одновременно.
jetty-version: jetty-9.4.8.v20171121,
У меня есть простой класс Foo
, который расширяется org.eclipse.jetty.server.handler.AbstractHandler
.
Также класс Bar
, который расширяется org.eclipse.jetty.websocket.api.WebSocketAdapter
Класс клея:
@SuppressWarnings("serial")
public class Glue extends WebSocketServlet {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(Bar.class);
}
}
Теперь я пытаюсь сделатьсервер, который использует оба из них:
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.setHandler(new Foo());
ServletHolder holder = new ServletHolder("ws-events", Glue.class);
context.addServlet(holder, "/whatever/*");
Server server = new Server(80);
server.setHandler(context);
server.start();
Это запускается, и когда я перехожу на localhost, я вижу контент, который должен отобразить Foo, но я не могу подключиться к веб-сокету.Похоже, все запросы отправляются в Foo.
Когда я удаляю строку context.setHandler(new Foo());
, она, очевидно, больше не отображает html-контент, но я могу подключиться к веб-сокету.
Я хочуоба работают одновременно.