信息:WebSocket 连接关闭,代码:1006 尝试 运行 websocket 示例

Info: WebSocket connection closed, Code: 1006 while trying to run websocket samples

我已经嵌入 tomcat 8.0.20 并在我的服务器中使用它。我构建了 tomcat websocket 示例,当我尝试在我的服务器中为所有 4 个示例(回声、聊天等)运行 时 我得到

Info: WebSocket connection closed, Code: 1006

在控制台中它打印类似(url 每个样本都是正确的)

WebSocket connection to 'ws://localhost:9763/examples/websocket/echoProgrammatic' failed: Error during WebSocket handshake: Unexpected response code: 302

当我在 tomcat 上部署它时,它显示 404 错误而不是 302。

谁能告诉我这可能是什么原因?

在pom中,我的依赖如下

 <dependency>
     <groupId>javax.websocket</groupId>
     <artifactId>javax.websocket-api</artifactId>
     <version>1.0</version>
     <scope>provided</scope>
 </dependency>

似乎未正确部署 websocket 实现。有人可以帮忙吗?

这完全是个错误。在 tomcat 示例中,所有 URLS 都用示例进行了硬编码,但我的上下文是示例(没有 s)。那是个错误。

<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-api</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>

使用 websocket API 和 Tomcat (groupId: org.apache.tomcat) 提供的 websocket 实现,而不是一些随机的第三方 jar。

你可以搜索Maven或者查看你源码res/maven目录下的pom文件。

Scope "provided"表示jar只在编译时使用,不会在运行时使用。

顺便说一句,Tomcat 的当前版本实现了 WebSocket 1.1。

扫描 websocket 端点由 javax.servlet.ServletContainerInitializer 的实现触发(在 tomcat-websocket.jarMETA-INF/services/javax.servlet.ServletContainerInitializer 文件中配置)。