4

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

信息:WebSocket 连接关闭,代码:1006

在控制台中,它会打印类似的内容(每个示例的 url 都是正确的)

WebSocket 连接到“ws://localhost:9763/examples/websocket/echoProgrammatic”失败:WebSocket 握手期间出错:意外响应代码:302

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

有人能告诉我这可能是什么原因吗?

在pom中,我的依赖如下

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

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

4

2 回答 2

4

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

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

您可以搜索 Maven 或查看源文件 res/maven 目录中的 pom 文件。

范围“提供”意味着该 jar 仅在编译时使用,而不是在运行时使用。

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

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

于 2015-04-28T00:04:33.147 回答
0

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

于 2015-04-27T15:55:38.363 回答