Jetty WebSocket v11 连接失败问题求助
Jetty WebSocket v11 连接失败问题求助
大家好,我正在尝试实现一个纯Java的WebSocket服务器,希望客户端能通过地址 ws://localhost:4550/api/myWebSocket 连接,并且能触发MyWebSocketHandler里的日志输出,但目前连接似乎有问题,完全看不到Handler里的任何反馈。
下面是我的所有代码和依赖配置,麻烦各位帮忙排查下哪里出了问题🙏:
App 主启动类
package com.main; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.servlet.ServletContextHandler; import org.eclipse.jetty.servlet.ServletHolder; public class App { public static void main(String[] args) { Server server = new Server(4550); ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); context.setContextPath("/api"); server.setHandler(context); ServletHolder wsHolder = new ServletHolder(MyWebSocketServlet.class); context.addServlet(wsHolder, "/"); try { server.start(); server.join(); } catch (Exception e) { e.printStackTrace(); } finally { server.destroy(); } } }
MyWebSocketServlet 类
package com.main; import org.eclipse.jetty.websocket.server.JettyWebSocketServlet; import org.eclipse.jetty.websocket.server.JettyWebSocketServletFactory; import jakarta.servlet.annotation.WebServlet; @WebServlet(urlPatterns = "/myWebSocket") public class MyWebSocketServlet extends JettyWebSocketServlet { @Override protected void configure(JettyWebSocketServletFactory factory) { factory.register(MyWebSocketHandler.class); } }
MyWebSocketHandler 类
package com.main; import org.eclipse.jetty.websocket.api.Session; import org.eclipse.jetty.websocket.api.annotations.OnWebSocketClose; import org.eclipse.jetty.websocket.api.annotations.OnWebSocketConnect; import org.eclipse.jetty.websocket.api.annotations.OnWebSocketMessage; import org.eclipse.jetty.websocket.api.annotations.WebSocket; @WebSocket public class MyWebSocketHandler { @OnWebSocketConnect public void onConnect(Session session) { System.out.println("Connected: " + session.getRemoteAddress()); } @OnWebSocketMessage public void onMessage(Session session, String message) { System.out.println("Message received: " + message); try { session.getRemote().sendString("Echo: " + message); } catch (Exception e) { e.printStackTrace(); } } @OnWebSocketClose public void onClose(Session session, int statusCode, String reason) { System.out.println("Closed: " + reason); } }
Gradle 依赖配置
implementation 'org.eclipse.jetty:jetty-server:11.0.7' implementation 'org.eclipse.jetty:jetty-servlet:11.0.7' implementation 'org.eclipse.jetty.websocket:websocket-jetty-server:11.0.7'
我的核心要求是:必须用纯Java应用实现(不能用Spring Boot或其他框架),并且优先使用Jetty库来构建WebSocket服务。麻烦帮忙看看哪里配置出错了,导致客户端无法正常连接?
备注:内容来源于stack exchange,提问作者Biggy Poopa
相关产品推荐
相关产品推荐

