【发布时间】:2018-02-09 03:16:15
【问题描述】:
我做了两个类:
- 带有嵌入式 Tomcat(8.5.20) 的主类
- Websocket的ServerEndpoint
我在 IntelliJ IDEA 上运行主类
并运行这个 JavaScript:new WebSocket('ws://localhost:8080/ws')
在 Google Chrome 的控制台中。
我预计响应码是 200,但实际上是 404。
我该如何解决这个问题?
主类:
package webapp;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
import javax.servlet.ServletException;
import java.io.File;
public class Main {
private static final String STATIC_DIR = "src/main/static/";
public static void main(String[] args) throws ServletException, LifecycleException {
Tomcat tomcat = new Tomcat();
tomcat.setPort(8080);
File staticDir = new File(STATIC_DIR);
tomcat.addWebapp("/", staticDir.getAbsolutePath());
tomcat.start();
tomcat.getServer().await();
}
}
服务器端点:
package webapp.websocket;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/ws")
public class SampleWebSocket {
@OnOpen
public void onOpen(Session session) {
System.out.println("open");
}
@OnClose
public void onClose(Session session) {
System.out.println("close");
}
@OnMessage
public String onMessage(String text) {
System.out.println("message:" + text);
return "Server:" + text;
}
}
谢谢。
【问题讨论】: