Jetty websockets服务器-没有HTTP服务器-删除404错误



我使用jetty实现了一个小型的web-sockets服务器,嵌入到一个更大的java应用程序中。服务器在8081端口上运行,一切正常(在google chrome中使用一个小客户端进行测试)。但是,如果我尝试访问http://localhost:8081(是的与http),我收到一个404错误,由jetty供电。

在jetty中是否有一种方法来检测接收到的格式是否基于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);
  }
}

如果您已经滚动了自己的处理程序,那么您应该能够弄清楚如何使该代码适应您的需要。

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()方法去做它需要做的事情。

相关内容

  • 没有找到相关文章

最新更新