này hoạt động:WebSockets không làm việc mà không WebApp
String webappDir = "...";
context = tomcat.addWebapp("/", new File(webappDir).getAbsolutePath());
này không:
context = tomcat.addContext("/", new File("").getAbsolutePath());
Tôi không thực sự cần một webappDir
trong trường hợp này bởi vì tôi không phục vụ bất kỳ trang JSP hoặc tài nguyên phía máy khách, tôi chỉ sử dụng response.getWriter().println(...);
phía máy chủ.
Không có trường hợp ngoại lệ nào bị ném, websocket chỉ đơn giản là không mở.
Tôi có thể giả định rằng đây là lỗi tomcat không?
Nếu bạn không cần ngữ cảnh ứng dụng web, bạn có thể sử dụng API Java cho WebSockets JSR 356 trực tiếp thay vì API websockets tomcat. – vzamanillo
Bạn có thể tạo ứng dụng khách Java độc lập với JSR 356, để xây dựng một máy chủ, bạn có thể sử dụng bất kỳ thùng chứa máy chủ Java EE nào có hỗ trợ websockets, được nhúng hay không (GlassFish, Apache Tomcat, Jetty ...) để triển khai WebSocketServlet và lắng nghe cho tin nhắn của khách hàng. – vzamanillo
Tôi nghĩ là không thể, API websockets được thiết kế để sử dụng ổ cắm trong các ứng dụng web, do đó bạn cần một thùng chứa, nếu bạn không cần một ứng dụng web không sử dụng ổ cắm web, chỉ cần sử dụng ổ cắm Java. – vzamanillo