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

sam*_*sam 3 javascript java tomcat websocket

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

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

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

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

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

我的应用程序和Oracle上的示例之间的区别是我将它拆分为两个项目一个服务和另一个Web应用程序.

我无法弄清楚为什么我会得到404作为服务.war文件被称为WebsocketHome.什么会导致这个问题?通常找不到404所以猜测它无法找到服务,我敢肯定我做的事情很愚蠢但是无法弄清楚问题出在哪里

谢谢

duf*_*356 7

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

尽量不要将Websocket-library导出到您的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>
Run Code Online (Sandbox Code Playgroud)

  • 这是答案的圣杯.我花了好几天找到这个答案. (2认同)