jetty websockets only server - 没有http服务器 - 删除404错误

时间:2011-10-24 16:47:12

标签: java jetty http-status-code-404 websocket embedded-jetty

我使用jetty实现了一个小型Web套接字服务器,嵌入在一个更大的Java应用程序中。服务器在8081端口上运行,一切正常(使用google chrome中的小客户端测试)。但是,如果我尝试访问http://localhost:8081(http为是),我会收到404错误,由jetty提供支持。

在jetty中是否有办法检测接收的格式是否基于websockets格式,如果不是(在我们的例子中为http),只是关闭套接字连接并且永远不会返回404错误?

由于

2 个答案:

答案 0 :(得分:2)

你可以自己做,但我认为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);
  }
}

如果你已经推出了自己的处理程序,那么你应该能够找出如何根据需要调整代码。

答案 1 :(得分:0)

Tim建议的是WebSocketServlet已经做的事情。 https://github.com/eclipse/jetty.project/blob/master/jetty-websocket/src/main/java/org/eclipse/jetty/websocket/WebSocketServlet.java

只需扩展WebSocketServlet,然后使用各种doGet,doPost,doPut方法来处理HTTP请求。单独保留service()方法以执行它所需的操作。