【发布时间】:2018-04-24 17:46:49
【问题描述】:
我正在尝试让普通的 AbstractHandler 和 WebSocketAdapter 同时工作。
jetty 版本:jetty-9.4.8.v20171121,
我有一个简单的类Foo 扩展org.eclipse.jetty.server.handler.AbstractHandler。
也是一个扩展org.eclipse.jetty.websocket.api.WebSocketAdapter的类Bar
胶水类:
@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 应该显示的内容,但我无法连接到 websocket。看起来所有请求都发送给 Foo。
当我删除 context.setHandler(new Foo()); 行时,它显然不再显示 html 内容,但我可以连接到 websocket。
我希望两者同时工作。
【问题讨论】:
标签: jetty java-websocket