我使用jetty实现了一个小型Web套接字服务器,嵌入在一个更大的Java应用程序中。服务器在8081端口上运行,一切正常(使用google chrome中的小客户端测试)。但是,如果我尝试访问http://localhost:8081(http为是),我会收到404错误,由jetty提供支持。
在jetty中是否有办法检测接收的格式是否基于websockets格式,如果不是(在我们的例子中为http),只是关闭套接字连接并且永远不会返回404错误?
由于
答案 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)
只需扩展WebSocketServlet,然后使用各种doGet,doPost,doPut方法来处理HTTP请求。单独保留service()方法以执行它所需的操作。