嵌入式Tomcat的WebSocket是404

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式Tomcat的WebSocket是404相关的知识,希望对你有一定的参考价值。

我做了两节课:

  1. 嵌入式Tomcat的主类(8.5.20)
  2. Websocket的ServerEndpoint

我在IntelliJ IDEA上运行主类并在Google Chrome的控制台中运行此javascriptnew WebSocket('ws://localhost:8080/ws')

我预计响应代码是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();
    }
}

ServerEndpoint:

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;
    }
}

谢谢。

以上是关于嵌入式Tomcat的WebSocket是404的主要内容,如果未能解决你的问题,请参考以下文章

Apache Tomcat 在使用 websocket 时返回 404

嵌入式tomcat 8.0.21中的Spring websocket

如何在 spring-boot 中拦截嵌入式 Tomcat 上的“全局”404

嵌入式 Tomcat 给出“不允许 HTTP 升级到 WebSocket”错误

将 Websocket 与 Tomcat 一起使用

在 tomcat 上部署 Spring Boot WAR 文件显示错误 404