我已经实现了使用码头的小型网络套接字服务器,该服务器嵌入了较大的Java应用程序中。服务器在8081端口上运行,并且一切正常(通过google chrome的小型客户端测试)。但是,如果尝试访问http://localhost:8081(使用http是),则会收到由jetty驱动的404错误。
是否有一种方法来检测接收到的格式是否基于websockets格式,以及是否(仅在我们的情况下为http)关闭套接字连接并且从不返回404错误?
谢谢
最佳答案
您可以自己完成此操作,但我认为Jetty并没有提供任何包装。
如果您使用的是WebSocketServlet
,则应覆盖service
方法,使其类似于
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
if(!"WebSocket".equals(request.getHeader("Upgrade")))
{
org.eclipse.jetty.server.Request jettyRequest = org.eclipse.jetty.server.Request.getRequest(request);
jettyRequest.getEndPoint().close();
jettyRequest.setHandled(true);
}
else
{
super.service(request, response);
}
}
如果您使用了自己的处理程序,则应该能够弄清楚如何使该代码适应您的需求。