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

WebSocket handshake: Unexpected response code: 404 -

本文关键字:代码 意外 握手 WebSocket 响应      更新时间:2023-09-26

我正在学习websockets并遵循这里的说明:http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/HomeWebsocket/WebsocketHome.html

我正在使用tomcat v8.0.21部署我的webapp,但得到以下错误

我的JavaScript项目看起来很好,当我访问webapp: My localhost和访问WebSocketJavaScriptProject

虽然在控制台窗口中得到错误:WebSocket连接到'ws://localhost:8080/websockehome/actions'失败:WebSocket握手期间错误:意外响应代码:404

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

我的应用程序和Oracle的例子之间的差异是我把它分为两个项目一个服务和另一个web应用程序。

我不明白为什么我会得到一个404作为服务。war文件被称为websockehome。你知道是什么导致了这个问题吗?通常找不到404,所以猜测它找不到服务,我确信我在做一些愚蠢的事情,但无法找出问题在哪里

谢谢

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

尽量不要将你的websocket库导出到你的web服务器,这样它会使用自己的实现。

如果你使用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文件。然后只在serverendpoint文件中添加要导入的内容。