该示例中的所有处理程序都与websockets处理程序
分开工作 WebSocketHandler wsHandler = new WebSocketHandler() {
@Override
public void configure(WebSocketServletFactory factory) {
factory.register(WebsocketsService.class);
}
};
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { resource_handler, servletContextHandler, wsHandler, new DefaultHandler() });
server.setHandler(handlers);
它以
失败与'ws:// localhost:8080 /'的WebSocket连接失败:WebSocket握手期间出错:意外响应代码:200
如何正确配置和添加websockets处理程序(可能使用不同的Path和Port作为servletContextHandler,还是可以在那里添加?)?
答案 0 :(得分:2)
一些事情。
ResourceHandler
和ServletContextHandler
,使用来自ServletContextHandler
,其资源库和DefaultServlet
的内置静态文件(请参阅{ {3}})ServletContextHandler
之后放置任何内容(如果您的ServletContextHandler
位于contextPath /
上)。一旦输入ServletContextHandler
(根据contextPath),它必须完成/完成(这是servlet规范的一部分),在ServletContextHandler
之后没有其他处理程序将运行。 (见prior answer with details)WebSocketHandler
和ServletContextHandler
,使用WebSocketUpgradeFilter
中的ServletContextHandler
并在那里添加/管理websocket端点。 (请参阅prior answer about this和embedded-jetty-cookbook了解如何使用它)