gpt4 book ai didi

java - 带有嵌入式 Tomcat 的 WebSocket 是 404

转载 作者:行者123 更新时间:2023-11-28 21:57:46 25 4
gpt4 key购买 nike

我做了两个类:

  1. 带有嵌入式 Tomcat(8.5.20) 的主类
  2. Websocket 的服务器端

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

谢谢。

最佳答案

我找到了一个解决方案。这个问题被重复了。

我读了Got 404 error on tomcat 7.0.47 websocket并编辑了我的 pom.xml。

以下是我的整个pom.xml。

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>websocket-sample</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>websocket-sample</name>

<properties>
<java.version>1.8</java.version>
<maven.compiler.target>${java.version}</maven.compiler.target>
<maven.compiler.source>${java.version}</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>8.5.20</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-websocket</artifactId>
<version>8.5.20</version>
</dependency>
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.1</version>
</dependency>
</dependencies>
</project>

关于java - 带有嵌入式 Tomcat 的 WebSocket 是 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45976817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com