Javascript WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404

Javascript WebSocket连接失败:WebSocket握手期间出错:意外响应代码:404,javascript,java,spring,spring-boot,java-websocket,Javascript,Java,Spring,Spring Boot,Java Websocket,我检查了很多答案,但无法解决此问题。任何人都可以使用java websocket帮助我解决此问题 Java index.html 聊天 连接 发送 使用maven和依赖项包括: com.google.code.gson 格森 2.8.0 javax.websocket javax.websocket-api 1.1 使用ApacheTomcat8.0和Java8.0。我已经浪费了差不多两天了。请任何人帮帮我。 提前感谢。我建议在您的问题中包含有关错误消息和堆栈跟踪的更多信息。如果您给我您

我检查了很多答案,但无法解决此问题。任何人都可以使用java websocket帮助我解决此问题

Java

index.html


聊天
连接
发送
使用maven和依赖项包括:


com.google.code.gson
格森
2.8.0
javax.websocket
javax.websocket-api
1.1
使用ApacheTomcat8.0和Java8.0。我已经浪费了差不多两天了。请任何人帮帮我。
提前感谢。

我建议在您的问题中包含有关错误消息和堆栈跟踪的更多信息。如果您给我您的邮件id,我可以分享我的演示项目。我可能无法单独为您提供答案。如果stacktrace中有敏感信息,请将其清空。但重要的是要知道错误是发生在Java还是JS中,以及相关文件中的哪一行。
@ServerEndpoint(value = "/chat/{username}", decoders = MessageDecoder.class, encoders =MessageEncoder.class)
public class ChatEndPoint {

    private Session session;
    private static final Set<ChatEndPoint> chatEndpoints = new CopyOnWriteArraySet<ChatEndPoint>();
    private static HashMap<String, String> users = new HashMap<String, String>();

    @OnOpen
    public void onOpen(Session session, @PathParam("username") String username) throws IOException, EncodeException {
         System.out.println("connected");
        this.session = session;
        chatEndpoints.add(this);
        users.put(session.getId(), username);

        Message message = new Message();
        message.setFrom(username);
        message.setContent("Connected!");
        broadcast(message);
    }

    @OnMessage 
    public void onMessage(Session session, Message message) throws IOException, EncodeException {
        message.setFrom(users.get(session.getId()));
        broadcast(message);
    }

    @OnClose
    public void onClose(Session session) throws IOException, EncodeException {
        chatEndpoints.remove(this);
        Message message = new Message();
        message.setFrom(users.get(session.getId()));
        message.setContent("Disconnected!");
        broadcast(message);
    }

    @OnError
    public void onError(Session session, Throwable throwable) {
        // Do error handling here
        System.out.println(session.getId());
    }

    private static void broadcast(Message message) throws IOException, EncodeException {
        chatEndpoints.forEach(endpoint -> {
            synchronized (endpoint) {
                try {
                    endpoint.session.getBasicRemote()
                        .sendObject(message);
                } 

                catch (IOException | EncodeException e) {
                    e.printStackTrace();
                }

            }
        });
    }

}
var ws;

function connect() {
    var username = document.getElementById("username").value;

    var host = document.location.host;
    var pathname = document.location.pathname;

    ws = new WebSocket("ws://"+host+"/chat/" + username);

    ws.onmessage = function(event) {
    var log = document.getElementById("log");
        console.log(event.data);
        var message = JSON.parse(event.data);
        log.innerHTML += message.from + " : " + message.content + "\n";
    };
}

function send() {
    var content = document.getElementById("msg").value;
    var json = JSON.stringify({
        "content":content
    });

    ws.send(json);
}
<html>
    <head>
        <title>Chat</title>
    </head>
    <body>

        <table>
            <tr>
                <td colspan="2">
                    <input type="text" id="username" placeholder="Username"/>
                    <button type="button" onclick="connect();" >Connect</button>
                </td>
            </tr>
            <tr>
                <td>
                    <textarea readonly="true" rows="10" cols="80" id="log"></textarea>
                </td>
            </tr>
            <tr>
                <td>
                    <input type="text" size="51" id="msg" placeholder="Message"/>
                    <button type="button" onclick="send();" >Send</button>
                </td>
            </tr>
        </table>
    </body>

    <script src="js/websocket.js"></script>

</html>
<dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
       <version>2.8.0</version>
    </dependency>

    <dependency>
       <groupId>javax.websocket</groupId>
       <artifactId>javax.websocket-api</artifactId>
       <version>1.1</version>
   </dependency>