我已经实现了使用码头的小型网络套接字服务器,该服务器嵌入了较大的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);
  }
}


如果您使用了自己的处理程序,则应该能够弄清楚如何使该代码适应您的需求。

09-26 19:15
查看更多