WebSocket 握手:意外的响应代码:404 -

WebSocket handshake: Unexpected response code: 404 -

我正在学习 websockets 并按照此处的说明进行操作:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html

我正在使用 tomcat v8.0.21 部署我的 webapp 但出现以下错误

我的 JavaScript 项目看起来不错,当我访问 webapp: 我的本地主机并访问 WebSocketJavaScriptProject

尽管在控制台中 window 得到错误:与 'ws://localhost:8080/WebsocketHome/actions' 的 WebSocket 连接失败:WebSocket 握手期间出错:意外响应代码:404

我的代码在这里:https://github.com/darkcloudi/WebSocketProject

我的应用程序与 Oracle 上的示例之间的区别在于我将其拆分为两个项目,一个是服务,另一个是 Web 应用程序。

我不明白为什么我会收到 404,因为服务 .war 文件名为 WebsocketHome。有什么想法会导致这个问题吗?通常找不到 404 所以猜测它找不到服务,我确定我在做一些愚蠢的事情但无法弄清楚问题出在哪里

谢谢

握手期间发生错误,因为 Tomcat 有自己的 api 用于 websockets。因此,您可能在 pom.xml 中添加了 JSR 实现或类似于 javax.websocket-api 的内容,在运行时会发生冲突。

尽量不要将您的 Websocket 库导出到您的网络服务器,因此它使用自己的实现。

如果你使用maven,请按照提供的方式设置websocket依赖:

<!-- Provided Websocket API, because tomcat has its own implementation -->
<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.1</version>
    <scope>provided</scope>
</dependency>

我也遇到了同样的问题。 尝试删除 $JAVA_HOME/lib 文件夹中包含 websocket 的不需要的 jar。 然后仅添加您在服务器端点文件中导入的内容。