Я пытаюсь заставить работать обычный AbstractHandler и WebSocketAdapter одновременно.
причал-версия: причал-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();
Это начинается, и когда я иду на локальный хост, я вижу контент, который должен отображать Foo, но я не могу подключиться к веб-сокету. Похоже, что все запросы идут к Foo.
Когда я удаляю строку context.setHandler(new Foo());
, она, очевидно, больше не отображает html-контент, но я могу подключиться к веб-сокету.
Я хочу, чтобы оба работали одновременно.